diff --git a/packages/twenty-server/src/engine/core-modules/auth/guards/google-apis-provider-enabled.guard.ts b/packages/twenty-server/src/engine/core-modules/auth/guards/google-apis-provider-enabled.guard.ts index 990d7a7d0..719978284 100644 --- a/packages/twenty-server/src/engine/core-modules/auth/guards/google-apis-provider-enabled.guard.ts +++ b/packages/twenty-server/src/engine/core-modules/auth/guards/google-apis-provider-enabled.guard.ts @@ -9,7 +9,10 @@ import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { TokenService } from 'src/engine/core-modules/auth/services/token.service'; -import { GoogleAPIsStrategy } from 'src/engine/core-modules/auth/strategies/google-apis.auth.strategy'; +import { + GoogleAPIScopeConfig, + GoogleAPIsStrategy, +} from 'src/engine/core-modules/auth/strategies/google-apis.auth.strategy'; import { FeatureFlagEntity, FeatureFlagKeys, @@ -34,21 +37,26 @@ export class GoogleAPIsProviderEnabledGuard implements CanActivate { throw new NotFoundException('Google apis auth is not enabled'); } - const { workspaceId } = await this.tokenService.verifyTransientToken( - getRequest(context)?.query?.transientToken ?? '', - ); + const transientToken = getRequest(context)?.query?.transientToken; - const isCalendarEnabledFlag = await this.featureFlagRepository.findOneBy({ - workspaceId, - key: FeatureFlagKeys.IsCalendarEnabled, - value: true, - }); + const scopeConfig: GoogleAPIScopeConfig = { + isCalendarEnabled: false, + }; - const isCalendarEnabled = !!isCalendarEnabledFlag?.value; + if (transientToken && typeof transientToken === 'string') { + const { workspaceId } = + await this.tokenService.verifyTransientToken(transientToken); - new GoogleAPIsStrategy(this.environmentService, { - isCalendarEnabled, - }); + const isCalendarEnabledFlag = await this.featureFlagRepository.findOneBy({ + workspaceId, + key: FeatureFlagKeys.IsCalendarEnabled, + value: true, + }); + + scopeConfig.isCalendarEnabled = !!isCalendarEnabledFlag?.value; + } + + new GoogleAPIsStrategy(this.environmentService, scopeConfig); return true; } diff --git a/packages/twenty-server/src/engine/core-modules/auth/services/token.service.ts b/packages/twenty-server/src/engine/core-modules/auth/services/token.service.ts index 034cf6202..b9fb436b0 100644 --- a/packages/twenty-server/src/engine/core-modules/auth/services/token.service.ts +++ b/packages/twenty-server/src/engine/core-modules/auth/services/token.service.ts @@ -60,7 +60,7 @@ export class TokenService { @InjectRepository(Workspace, 'core') private readonly workspaceRepository: Repository, private readonly emailService: EmailService, - ) { } + ) {} async generateAccessToken( userId: string, @@ -382,7 +382,9 @@ export class TokenService { }); if (!user) { - throw new NotFoundException('User who generated the token does not exist'); + throw new NotFoundException( + 'User who generated the token does not exist', + ); } if (!user.defaultWorkspace) { diff --git a/packages/twenty-server/src/engine/core-modules/auth/strategies/google-apis.auth.strategy.ts b/packages/twenty-server/src/engine/core-modules/auth/strategies/google-apis.auth.strategy.ts index 76bb09737..01b5c961d 100644 --- a/packages/twenty-server/src/engine/core-modules/auth/strategies/google-apis.auth.strategy.ts +++ b/packages/twenty-server/src/engine/core-modules/auth/strategies/google-apis.auth.strategy.ts @@ -22,6 +22,10 @@ export type GoogleAPIsRequest = Omit< }; }; +export type GoogleAPIScopeConfig = { + isCalendarEnabled?: boolean; +}; + @Injectable() export class GoogleAPIsStrategy extends PassportStrategy( Strategy, @@ -29,9 +33,7 @@ export class GoogleAPIsStrategy extends PassportStrategy( ) { constructor( environmentService: EnvironmentService, - scopeConfig: { - isCalendarEnabled?: boolean; - }, + scopeConfig: GoogleAPIScopeConfig, ) { const scope = ['email', 'profile'];