From 8d255bd051dd199662ec8bfb92a9d2b5dd7085b0 Mon Sep 17 00:00:00 2001 From: juancarmore Date: Wed, 21 Jan 2026 19:34:10 +0100 Subject: [PATCH] backend: enforce required oauthProviders in AuthenticationConfig and update related schemas --- .../models/mongoose-schemas/global-config.schema.ts | 2 +- .../src/models/zod-schemas/global-config.schema.ts | 12 ++++++++++-- .../backend/src/services/global-config.service.ts | 3 ++- meet-ce/typings/src/auth-config.ts | 4 ++-- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/meet-ce/backend/src/models/mongoose-schemas/global-config.schema.ts b/meet-ce/backend/src/models/mongoose-schemas/global-config.schema.ts index c290edd2..d490280b 100644 --- a/meet-ce/backend/src/models/mongoose-schemas/global-config.schema.ts +++ b/meet-ce/backend/src/models/mongoose-schemas/global-config.schema.ts @@ -49,7 +49,7 @@ const AuthenticationConfigSchema = new Schema( }, oauthProviders: { type: [OAuthProviderConfigSchema], - required: false + required: true } }, { _id: false } diff --git a/meet-ce/backend/src/models/zod-schemas/global-config.schema.ts b/meet-ce/backend/src/models/zod-schemas/global-config.schema.ts index a9b441ca..b63f8648 100644 --- a/meet-ce/backend/src/models/zod-schemas/global-config.schema.ts +++ b/meet-ce/backend/src/models/zod-schemas/global-config.schema.ts @@ -1,4 +1,4 @@ -import { AuthenticationConfig, SecurityConfig, WebhookConfig } from '@openvidu-meet/typings'; +import { AuthenticationConfig, OAuthProvider, SecurityConfig, WebhookConfig } from '@openvidu-meet/typings'; import { z } from 'zod'; import { AppearanceConfigSchema } from './room.schema.js'; @@ -29,8 +29,16 @@ export const TestWebhookReqSchema = z.object({ .regex(/^https?:\/\//, { message: 'URL must start with http:// or https://' }) }); +const OAuthProviderConfigSchema = z.object({ + provider: z.nativeEnum(OAuthProvider), + clientId: z.string(), + clientSecret: z.string(), + redirectUri: z.string() +}); + const AuthenticationConfigSchema: z.ZodType = z.object({ - allowUserCreation: z.boolean() + allowUserCreation: z.boolean(), + oauthProviders: z.array(OAuthProviderConfigSchema) }); export const SecurityConfigSchema: z.ZodType = z.object({ diff --git a/meet-ce/backend/src/services/global-config.service.ts b/meet-ce/backend/src/services/global-config.service.ts index f672aaff..6ef9ee54 100644 --- a/meet-ce/backend/src/services/global-config.service.ts +++ b/meet-ce/backend/src/services/global-config.service.ts @@ -207,7 +207,8 @@ export class GlobalConfigService { }, securityConfig: { authentication: { - allowUserCreation: true + allowUserCreation: true, + oauthProviders: [] } }, roomsConfig: { diff --git a/meet-ce/typings/src/auth-config.ts b/meet-ce/typings/src/auth-config.ts index 7cf77da7..a8dc5cd3 100644 --- a/meet-ce/typings/src/auth-config.ts +++ b/meet-ce/typings/src/auth-config.ts @@ -8,9 +8,9 @@ export interface AuthenticationConfig { allowUserCreation: boolean; /** - * Optional list of allowed OAuth providers for user registration. + * List of allowed OAuth providers for user registration. */ - oauthProviders?: OAuthProviderConfig[]; + oauthProviders: OAuthProviderConfig[]; } /**