typings: Add authentication preferences and update global preferences

This commit is contained in:
juancarmore 2025-03-25 13:02:40 +01:00
parent fec108d802
commit 695ee31fbd
3 changed files with 103 additions and 17 deletions

View File

@ -0,0 +1,84 @@
export interface AuthenticationPreferences {
authMode: AuthMode;
method: ValidAuthMethod;
}
/**
* Authentication modes available to enter a room.
*/
export const enum AuthMode {
NONE = 'none', // No authentication required
MODERATORS_ONLY = 'moderators_only', // Only moderators need authentication
ALL_USERS = 'all_users' // All users need authentication
}
/**
* Authentication method base interface.
*/
export interface AuthMethod {
type: AuthType;
}
/**
* Enum for authentication types.
*/
export const enum AuthType {
SINGLE_USER = 'single-user'
// MULTI_USER = 'multi-user',
// OAUTH_ONLY = 'oauth-only'
}
/**
* Authentication method: Single user with fixed credentials.
*/
export interface SingleUserAuth extends AuthMethod {
type: AuthType.SINGLE_USER;
credentials: SingleUserCredentials;
}
/**
* Authentication method: Multiple users with optional OAuth integration.
*/
// export interface MultiUserAuth extends AuthMethod {
// type: AuthType.MULTI_USER;
// oauthProviders?: OAuthProviderConfig[];
// }
/**
* Authentication method: Only OAuth authentication.
*/
// export interface OAuthOnlyAuth extends AuthMethod {
// type: AuthType.OAUTH_ONLY;
// oauthProviders: OAuthProviderConfig[];
// }
/**
* Union type for allowed authentication methods.
*/
export type ValidAuthMethod = SingleUserAuth /* | MultiUserAuth | OAuthOnlyAuth */;
/**
* Configuration for a single user login method.
*/
export interface SingleUserCredentials {
username: string;
passwordHash: string;
}
/**
* Configuration for OAuth authentication.
*/
// export interface OAuthProviderConfig {
// provider: OAuthProvider;
// clientId: string;
// clientSecret: string;
// redirectUri: string;
// }
/**
* Supported OAuth providers.
*/
// export const enum OAuthProvider {
// GOOGLE = 'google',
// GITHUB = 'github'
// }

View File

@ -1,27 +1,28 @@
import { AuthenticationPreferences } from './auth-preferences.js';
/**
* Represents global preferences for OpenVidu Meet.
*/
export interface GlobalPreferences {
projectId: string;
// roomFeaturesPreferences: RoomFeaturesPreferences;
webhooksPreferences: WebhookPreferences;
// securityPreferences: SecurityPreferences;
projectId: string;
// roomFeaturesPreferences: RoomFeaturesPreferences;
webhooksPreferences: WebhookPreferences;
securityPreferences: SecurityPreferences;
}
export interface WebhookPreferences {
enabled: boolean;
url: string;
// events: WebhookEvent[];
enabled: boolean;
url: string;
// events: WebhookEvent[];
}
// export interface SecurityPreferences {
// authentication: AuthenticationPreferences;
// e2eEncryption: {}
export interface SecurityPreferences {
authentication: AuthenticationPreferences;
roomCreationPolicy: RoomCreationPolicy;
// e2eEncryption: {};
}
// }
// export interface AuthenticationPreferences {
// requiresAuthentication: boolean;
// authenticationMethod: AuthMethod; // Método de autenticación
// userAccessControl: UserAccessControl; // Control sobre quién puede acceder y cómo
// }
export interface RoomCreationPolicy {
allowRoomCreation: boolean;
requireAuthentication: boolean;
}

View File

@ -1,4 +1,5 @@
export * from './global-preferences.js';
export * from './auth-preferences.js';
export * from './room-preferences.js';
export * from './participant.js';
export * from './token.js';