diff --git a/packages/twenty-docs/docs/start/self-hosting/self-hosting.mdx b/packages/twenty-docs/docs/start/self-hosting/self-hosting.mdx index ba0c9844b..78bc01573 100644 --- a/packages/twenty-docs/docs/start/self-hosting/self-hosting.mdx +++ b/packages/twenty-docs/docs/start/self-hosting/self-hosting.mdx @@ -69,8 +69,7 @@ import TabItem from '@theme/TabItem'; { const token = transientToken.data?.generateTransientToken.transientToken.token; - window.location.href = `${authServerUrl}/auth/google-gmail?transientToken=${token}`; + window.location.href = `${authServerUrl}/auth/google-apis?transientToken=${token}`; }, [generateTransientToken]); return { triggerGoogleApisOAuth }; diff --git a/packages/twenty-server/.env.example b/packages/twenty-server/.env.example index d1f872cce..133630538 100644 --- a/packages/twenty-server/.env.example +++ b/packages/twenty-server/.env.example @@ -30,7 +30,6 @@ SIGN_IN_PREFILLED=true # AUTH_GOOGLE_CLIENT_ID=replace_me_with_google_client_id # AUTH_GOOGLE_CLIENT_SECRET=replace_me_with_google_client_secret # AUTH_GOOGLE_CALLBACK_URL=http://localhost:3000/auth/google/redirect -# MESSAGING_PROVIDER_GMAIL_CALLBACK_URL=http://localhost:3000/auth/google-gmail/get-access-token # AUTH_GOOGLE_APIS_CALLBACK_URL=http://localhost:3000/auth/google-apis/get-access-token # STORAGE_TYPE=local # STORAGE_LOCAL_PATH=.local-storage diff --git a/packages/twenty-server/src/engine/core-modules/auth/auth.module.ts b/packages/twenty-server/src/engine/core-modules/auth/auth.module.ts index 2a3fefc1d..e8a7d73f5 100644 --- a/packages/twenty-server/src/engine/core-modules/auth/auth.module.ts +++ b/packages/twenty-server/src/engine/core-modules/auth/auth.module.ts @@ -19,7 +19,6 @@ import { TokenService } from 'src/engine/core-modules/auth/services/token.servic import { GoogleAPIsService } from 'src/engine/core-modules/auth/services/google-apis.service'; import { UserWorkspaceModule } from 'src/engine/core-modules/user-workspace/user-workspace.module'; import { SignUpService } from 'src/engine/core-modules/auth/services/sign-up.service'; -import { GoogleGmailAuthController } from 'src/engine/core-modules/auth/controllers/google-gmail-auth.controller'; import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity'; import { FileUploadModule } from 'src/engine/core-modules/file/file-upload/file-upload.module'; import { AppTokenService } from 'src/engine/core-modules/app-token/services/app-token.service'; @@ -58,7 +57,6 @@ const jwtModule = JwtModule.registerAsync({ controllers: [ GoogleAuthController, GoogleAPIsAuthController, - GoogleGmailAuthController, VerifyAuthController, ], providers: [ diff --git a/packages/twenty-server/src/engine/core-modules/auth/controllers/google-gmail-auth.controller.ts b/packages/twenty-server/src/engine/core-modules/auth/controllers/google-gmail-auth.controller.ts deleted file mode 100644 index e4d40104b..000000000 --- a/packages/twenty-server/src/engine/core-modules/auth/controllers/google-gmail-auth.controller.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { Controller, Get, Req, Res, UseGuards } from '@nestjs/common'; - -import { Response } from 'express'; - -import { GoogleAPIsOauthGuard } from 'src/engine/core-modules/auth/guards/google-apis-oauth.guard'; -import { GoogleAPIsProviderEnabledGuard } from 'src/engine/core-modules/auth/guards/google-apis-provider-enabled.guard'; -import { GoogleAPIsService } from 'src/engine/core-modules/auth/services/google-apis.service'; -import { TokenService } from 'src/engine/core-modules/auth/services/token.service'; -import { GoogleAPIsRequest } from 'src/engine/core-modules/auth/strategies/google-apis.auth.strategy'; -import { EnvironmentService } from 'src/engine/integrations/environment/environment.service'; - -@Controller('auth/google-gmail') -export class GoogleGmailAuthController { - constructor( - private readonly googleAPIsService: GoogleAPIsService, - private readonly tokenService: TokenService, - private readonly environmentService: EnvironmentService, - ) {} - - @Get() - @UseGuards(GoogleAPIsProviderEnabledGuard, GoogleAPIsOauthGuard) - async googleAuth() { - // As this method is protected by Google Auth guard, it will trigger Google SSO flow - return; - } - - @Get('get-access-token') - @UseGuards(GoogleAPIsProviderEnabledGuard, GoogleAPIsOauthGuard) - async googleAuthGetAccessToken( - @Req() req: GoogleAPIsRequest, - @Res() res: Response, - ) { - const { user } = req; - - const { email, accessToken, refreshToken, transientToken } = user; - - const { workspaceMemberId, workspaceId } = - await this.tokenService.verifyTransientToken(transientToken); - - const demoWorkspaceIds = this.environmentService.get('DEMO_WORKSPACE_IDS'); - - if (demoWorkspaceIds.includes(workspaceId)) { - throw new Error('Cannot connect Gmail account to demo workspace'); - } - - if (!workspaceId) { - throw new Error('Workspace not found'); - } - - await this.googleAPIsService.saveOrUpdateConnectedAccount({ - handle: email, - workspaceMemberId: workspaceMemberId, - workspaceId: workspaceId, - accessToken, - refreshToken, - }); - - return res.redirect( - `${this.environmentService.get('FRONT_BASE_URL')}/settings/accounts`, - ); - } -} 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 ce1dada7d..de05b4aff 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 @@ -41,9 +41,7 @@ export class GoogleAPIsStrategy extends PassportStrategy( super({ clientID: environmentService.get('AUTH_GOOGLE_CLIENT_ID'), clientSecret: environmentService.get('AUTH_GOOGLE_CLIENT_SECRET'), - callbackURL: environmentService.get('CALENDAR_PROVIDER_GOOGLE_ENABLED') - ? environmentService.get('AUTH_GOOGLE_APIS_CALLBACK_URL') - : environmentService.get('MESSAGING_PROVIDER_GMAIL_CALLBACK_URL'), + callbackURL: environmentService.get('AUTH_GOOGLE_APIS_CALLBACK_URL'), scope, passReqToCallback: true, }); diff --git a/packages/twenty-server/src/engine/integrations/environment/environment-variables.ts b/packages/twenty-server/src/engine/integrations/environment/environment-variables.ts index f5ca70985..ed4d91e73 100644 --- a/packages/twenty-server/src/engine/integrations/environment/environment-variables.ts +++ b/packages/twenty-server/src/engine/integrations/environment/environment-variables.ts @@ -272,8 +272,6 @@ export class EnvironmentVariables { @CastToBoolean() MESSAGING_PROVIDER_GMAIL_ENABLED: boolean = false; - MESSAGING_PROVIDER_GMAIL_CALLBACK_URL: string; - MESSAGE_QUEUE_TYPE: string = MessageQueueDriverType.Sync; EMAIL_FROM_ADDRESS: string = 'noreply@yourdomain.com';