From 36fa34b3037c4c74ea1c7a5a91497a020a09b5a3 Mon Sep 17 00:00:00 2001 From: yassinedorbozgithub Date: Sat, 12 Apr 2025 04:58:56 +0100 Subject: [PATCH] fix(api): resolve allowed_domains redis bug --- api/src/main.ts | 6 +++--- api/src/setting/services/setting.service.spec.ts | 2 +- api/src/setting/services/setting.service.ts | 4 ++-- api/src/websocket/utils/gateway-options.ts | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/api/src/main.ts b/api/src/main.ts index 1ba080a4..7b38a68e 100644 --- a/api/src/main.ts +++ b/api/src/main.ts @@ -50,11 +50,11 @@ async function bootstrap() { const settingService = app.get(SettingService); app.enableCors({ - origin: (origin, callback) => { - settingService + origin: async (origin, callback) => { + await settingService .getAllowedOrigins() .then((allowedOrigins) => { - if (!origin || allowedOrigins.has(origin)) { + if (!origin || allowedOrigins.includes(origin)) { callback(null, true); } else { callback(new Error('Not allowed by CORS')); diff --git a/api/src/setting/services/setting.service.spec.ts b/api/src/setting/services/setting.service.spec.ts index e3fac80e..17e8d274 100644 --- a/api/src/setting/services/setting.service.spec.ts +++ b/api/src/setting/services/setting.service.spec.ts @@ -195,7 +195,7 @@ describe('SettingService', () => { expect(settingService.find).toHaveBeenCalledWith({ label: 'allowed_domains', }); - expect(result).toEqual(new Set(['*', 'https://example.com'])); + expect(result).toEqual(['*', 'https://example.com']); }); }); }); diff --git a/api/src/setting/services/setting.service.ts b/api/src/setting/services/setting.service.ts index a07a94c9..1f4d5cad 100644 --- a/api/src/setting/services/setting.service.ts +++ b/api/src/setting/services/setting.service.ts @@ -135,7 +135,7 @@ export class SettingService extends BaseService { * @returns A promise that resolves to a set of allowed origins */ @Cacheable(ALLOWED_ORIGINS_CACHE_KEY) - async getAllowedOrigins() { + async getAllowedOrigins(): Promise { const settings = (await this.find({ label: 'allowed_domains', })) as TextSetting[]; @@ -150,7 +150,7 @@ export class SettingService extends BaseService { ...allowedDomains, ]); - return uniqueOrigins; + return Array.from(uniqueOrigins); } /** diff --git a/api/src/websocket/utils/gateway-options.ts b/api/src/websocket/utils/gateway-options.ts index 4d2795c8..d8b64593 100644 --- a/api/src/websocket/utils/gateway-options.ts +++ b/api/src/websocket/utils/gateway-options.ts @@ -54,15 +54,15 @@ export const buildWebSocketGatewayOptions = (): Partial => { ...(config.sockets.cookie && { cookie: config.sockets.cookie }), ...(config.sockets.onlyAllowOrigins && { cors: { - origin: (origin, cb) => { + origin: async (origin, cb) => { // Retrieve the allowed origins from the settings const app = AppInstance.getApp(); const settingService = app.get(SettingService); - settingService + await settingService .getAllowedOrigins() .then((allowedOrigins) => { - if (origin && allowedOrigins.has(origin)) { + if (origin && allowedOrigins.includes(origin)) { cb(null, true); } else { // eslint-disable-next-line no-console