From fe6d0241a86290d96ea5487a2b6889e1c8e1641c Mon Sep 17 00:00:00 2001 From: Marie <51697796+ijreilly@users.noreply.github.com> Date: Wed, 9 Apr 2025 13:58:30 +0200 Subject: [PATCH] [permissions] Allow logo update during sign-up (#11468) Fixes https://github.com/twentyhq/twenty/issues/11410 --- .../workspace/services/workspace.service.ts | 9 +++++++++ .../src/engine/guards/settings-permissions.guard.ts | 12 ++++++++++++ 2 files changed, 21 insertions(+) diff --git a/packages/twenty-server/src/engine/core-modules/workspace/services/workspace.service.ts b/packages/twenty-server/src/engine/core-modules/workspace/services/workspace.service.ts index 8cf996155..1fb1cb8cc 100644 --- a/packages/twenty-server/src/engine/core-modules/workspace/services/workspace.service.ts +++ b/packages/twenty-server/src/engine/core-modules/workspace/services/workspace.service.ts @@ -165,6 +165,7 @@ export class WorkspaceService extends TypeOrmQueryService { userWorkspaceId, workspaceId: workspace.id, apiKey, + workspaceActivationStatus: workspace.activationStatus, }); if (payload.subdomain && workspace.subdomain !== payload.subdomain) { @@ -460,11 +461,13 @@ export class WorkspaceService extends TypeOrmQueryService { userWorkspaceId, workspaceId, apiKey, + workspaceActivationStatus, }: { payload: Partial; userWorkspaceId?: string; workspaceId: string; apiKey?: string; + workspaceActivationStatus: WorkspaceActivationStatus; }) { if ( 'displayName' in payload || @@ -476,6 +479,12 @@ export class WorkspaceService extends TypeOrmQueryService { throw new Error('Missing userWorkspaceId in authContext'); } + if ( + workspaceActivationStatus === WorkspaceActivationStatus.PENDING_CREATION + ) { + return; + } + const userHasPermission = await this.permissionsService.userHasWorkspaceSettingPermission({ userWorkspaceId, diff --git a/packages/twenty-server/src/engine/guards/settings-permissions.guard.ts b/packages/twenty-server/src/engine/guards/settings-permissions.guard.ts index f9ea8c7a2..42d9e58da 100644 --- a/packages/twenty-server/src/engine/guards/settings-permissions.guard.ts +++ b/packages/twenty-server/src/engine/guards/settings-permissions.guard.ts @@ -8,6 +8,7 @@ import { import { GqlExecutionContext } from '@nestjs/graphql'; import { isDefined } from 'twenty-shared/utils'; +import { WorkspaceActivationStatus } from 'twenty-shared/workspace'; import { SettingPermissionType } from 'src/engine/metadata-modules/permissions/constants/setting-permission-type.constants'; import { @@ -28,6 +29,17 @@ export const SettingsPermissionsGuard = ( const ctx = GqlExecutionContext.create(context); const workspaceId = ctx.getContext().req.workspace.id; const userWorkspaceId = ctx.getContext().req.userWorkspaceId; + const workspaceActivationStatus = + ctx.getContext().req.workspace.activationStatus; + + if ( + [ + WorkspaceActivationStatus.PENDING_CREATION, + WorkspaceActivationStatus.ONGOING_CREATION, + ].includes(workspaceActivationStatus) + ) { + return true; + } const hasPermission = await this.permissionsService.userHasWorkspaceSettingPermission({