diff --git a/packages/hoppscotch-backend/src/auth/strategies/microsoft.strategy.ts b/packages/hoppscotch-backend/src/auth/strategies/microsoft.strategy.ts index 9f171d46e..906385f5f 100644 --- a/packages/hoppscotch-backend/src/auth/strategies/microsoft.strategy.ts +++ b/packages/hoppscotch-backend/src/auth/strategies/microsoft.strategy.ts @@ -19,7 +19,7 @@ export class MicrosoftStrategy extends PassportStrategy(Strategy) { clientSecret: configService.get('INFRA.MICROSOFT_CLIENT_SECRET'), callbackURL: configService.get('INFRA.MICROSOFT_CALLBACK_URL'), scope: [configService.get('INFRA.MICROSOFT_SCOPE')], - tenant: configService.get('MICROSOFT_TENANT'), + tenant: configService.get('INFRA.MICROSOFT_TENANT'), store: true, }); } diff --git a/packages/hoppscotch-backend/src/infra-config/helper.ts b/packages/hoppscotch-backend/src/infra-config/helper.ts index 92c7fa8f0..b76833034 100644 --- a/packages/hoppscotch-backend/src/infra-config/helper.ts +++ b/packages/hoppscotch-backend/src/infra-config/helper.ts @@ -28,6 +28,7 @@ const AuthProviderConfigurations = { InfraConfigEnum.MICROSOFT_CLIENT_SECRET, InfraConfigEnum.MICROSOFT_CALLBACK_URL, InfraConfigEnum.MICROSOFT_SCOPE, + InfraConfigEnum.MICROSOFT_TENANT, ], [AuthProvider.EMAIL]: [ InfraConfigEnum.MAILER_SMTP_URL, diff --git a/packages/hoppscotch-backend/src/infra-config/infra-config.service.ts b/packages/hoppscotch-backend/src/infra-config/infra-config.service.ts index 9ee87b738..c8ccaacd2 100644 --- a/packages/hoppscotch-backend/src/infra-config/infra-config.service.ts +++ b/packages/hoppscotch-backend/src/infra-config/infra-config.service.ts @@ -21,7 +21,6 @@ import { throwErr, validateSMTPEmail, validateSMTPUrl, - validateSSOScope, validateUrl, } from 'src/utils'; import { ConfigService } from '@nestjs/config'; @@ -106,6 +105,10 @@ export class InfraConfigService implements OnModuleInit { name: InfraConfigEnum.MICROSOFT_SCOPE, value: process.env.MICROSOFT_SCOPE, }, + { + name: InfraConfigEnum.MICROSOFT_TENANT, + value: process.env.MICROSOFT_TENANT, + }, { name: InfraConfigEnum.VITE_ALLOWED_AUTH_PROVIDERS, value: getConfiguredSSOProviders(), @@ -278,7 +281,8 @@ export class InfraConfigService implements OnModuleInit { configMap.MICROSOFT_CLIENT_ID && configMap.MICROSOFT_CLIENT_SECRET && configMap.MICROSOFT_CALLBACK_URL && - configMap.MICROSOFT_SCOPE + configMap.MICROSOFT_SCOPE && + configMap.MICROSOFT_TENANT ); case AuthProvider.EMAIL: return configMap.MAILER_SMTP_URL && configMap.MAILER_ADDRESS_FROM; @@ -455,8 +459,7 @@ export class InfraConfigService implements OnModuleInit { return E.left(INFRA_CONFIG_INVALID_INPUT); break; case InfraConfigEnumForClient.GOOGLE_SCOPE: - if (!validateSSOScope(infraConfigs[i].value)) - return E.left(INFRA_CONFIG_INVALID_INPUT); + if (!infraConfigs[i].value) return E.left(INFRA_CONFIG_INVALID_INPUT); break; case InfraConfigEnumForClient.GITHUB_CLIENT_ID: if (!infraConfigs[i].value) return E.left(INFRA_CONFIG_INVALID_INPUT); @@ -469,8 +472,7 @@ export class InfraConfigService implements OnModuleInit { return E.left(INFRA_CONFIG_INVALID_INPUT); break; case InfraConfigEnumForClient.GITHUB_SCOPE: - if (!validateSSOScope(infraConfigs[i].value)) - return E.left(INFRA_CONFIG_INVALID_INPUT); + if (!infraConfigs[i].value) return E.left(INFRA_CONFIG_INVALID_INPUT); break; case InfraConfigEnumForClient.MICROSOFT_CLIENT_ID: if (!infraConfigs[i].value) return E.left(INFRA_CONFIG_INVALID_INPUT); @@ -483,8 +485,10 @@ export class InfraConfigService implements OnModuleInit { return E.left(INFRA_CONFIG_INVALID_INPUT); break; case InfraConfigEnumForClient.MICROSOFT_SCOPE: - if (!validateSSOScope(infraConfigs[i].value)) - return E.left(INFRA_CONFIG_INVALID_INPUT); + if (!infraConfigs[i].value) return E.left(INFRA_CONFIG_INVALID_INPUT); + break; + case InfraConfigEnumForClient.MICROSOFT_TENANT: + if (!infraConfigs[i].value) return E.left(INFRA_CONFIG_INVALID_INPUT); break; default: break; diff --git a/packages/hoppscotch-backend/src/types/InfraConfig.ts b/packages/hoppscotch-backend/src/types/InfraConfig.ts index 02ccb41ea..74cee34af 100644 --- a/packages/hoppscotch-backend/src/types/InfraConfig.ts +++ b/packages/hoppscotch-backend/src/types/InfraConfig.ts @@ -16,6 +16,7 @@ export enum InfraConfigEnum { MICROSOFT_CLIENT_SECRET = 'MICROSOFT_CLIENT_SECRET', MICROSOFT_CALLBACK_URL = 'MICROSOFT_CALLBACK_URL', MICROSOFT_SCOPE = 'MICROSOFT_SCOPE', + MICROSOFT_TENANT = 'MICROSOFT_TENANT', VITE_ALLOWED_AUTH_PROVIDERS = 'VITE_ALLOWED_AUTH_PROVIDERS', @@ -42,6 +43,7 @@ export enum InfraConfigEnumForClient { MICROSOFT_CLIENT_SECRET = 'MICROSOFT_CLIENT_SECRET', MICROSOFT_CALLBACK_URL = 'MICROSOFT_CALLBACK_URL', MICROSOFT_SCOPE = 'MICROSOFT_SCOPE', + MICROSOFT_TENANT = 'MICROSOFT_TENANT', ALLOW_ANALYTICS_COLLECTION = 'ALLOW_ANALYTICS_COLLECTION', IS_FIRST_TIME_INFRA_SETUP = 'IS_FIRST_TIME_INFRA_SETUP', diff --git a/packages/hoppscotch-backend/src/utils.ts b/packages/hoppscotch-backend/src/utils.ts index 74a5cbfcc..ea809a4ed 100644 --- a/packages/hoppscotch-backend/src/utils.ts +++ b/packages/hoppscotch-backend/src/utils.ts @@ -193,22 +193,6 @@ export const validateUrl = (url: string) => { return urlRegex.test(url); }; -/** - * Validate SSO (Google, Github, Microsoft) Scope - * @param scope The scope to validate - * @returns boolean - */ -export const validateSSOScope = (scope: string) => { - if (!scope || scope.length === 0) return false; - - const scopes = scope.split(','); - scopes.forEach((aScope) => { - if (aScope.length === 0) return false; - }); - - return true; -}; - /** * String to JSON parser * @param {str} str The string to parse