fix(): remove originHeader decorator (#12245)

Fix
https://github.com/twentyhq/core-team-issues/issues/858#issuecomment-2891213392
Fix #11966 
Fix #12175
This commit is contained in:
Antoine Moreaux
2025-05-23 18:01:36 +02:00
committed by GitHub
parent 54edcc0ea7
commit 8de85eea61
20 changed files with 98 additions and 62 deletions

View File

@ -48,7 +48,6 @@ import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
import { workspaceValidator } from 'src/engine/core-modules/workspace/workspace.validate';
import { AuthUser } from 'src/engine/decorators/auth/auth-user.decorator';
import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator';
import { OriginHeader } from 'src/engine/decorators/auth/origin-header.decorator';
import { SettingsPermissionsGuard } from 'src/engine/guards/settings-permissions.guard';
import { UserAuthGuard } from 'src/engine/guards/user-auth.guard';
import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard';
@ -135,7 +134,7 @@ export class AuthResolver {
async getLoginTokenFromCredentials(
@Args()
getLoginTokenFromCredentialsInput: GetLoginTokenFromCredentialsInput,
@OriginHeader() origin: string,
@Args('origin') origin: string,
): Promise<LoginToken> {
const workspace =
await this.domainManagerService.getWorkspaceByOriginOrDefaultWorkspace(
@ -167,7 +166,7 @@ export class AuthResolver {
async getLoginTokenFromEmailVerificationToken(
@Args()
getLoginTokenFromEmailVerificationTokenInput: GetLoginTokenFromEmailVerificationTokenInput,
@OriginHeader() origin: string,
@Args('origin') origin: string,
) {
const user =
await this.emailVerificationTokenService.validateEmailVerificationTokenOrThrow(
@ -320,7 +319,7 @@ export class AuthResolver {
@Mutation(() => AuthTokens)
async getAuthTokensFromLoginToken(
@Args() getAuthTokensFromLoginTokenInput: GetAuthTokensFromLoginTokenInput,
@OriginHeader() origin: string,
@Args('origin') origin: string,
): Promise<AuthTokens> {
const workspace =
await this.domainManagerService.getWorkspaceByOriginOrDefaultWorkspace(

View File

@ -9,7 +9,6 @@ import { ResendEmailVerificationTokenOutput } from 'src/engine/core-modules/emai
import { EmailVerificationExceptionFilter } from 'src/engine/core-modules/email-verification/email-verification-exception-filter.util';
import { EmailVerificationService } from 'src/engine/core-modules/email-verification/services/email-verification.service';
import { I18nContext } from 'src/engine/core-modules/i18n/types/i18n-context.type';
import { OriginHeader } from 'src/engine/decorators/auth/origin-header.decorator';
@Resolver()
@UseFilters(EmailVerificationExceptionFilter)
@ -23,7 +22,7 @@ export class EmailVerificationResolver {
async resendEmailVerificationToken(
@Args()
resendEmailVerificationTokenInput: ResendEmailVerificationTokenInput,
@OriginHeader() origin: string,
@Args('origin') origin: string,
@Context() context: I18nContext,
): Promise<ResendEmailVerificationTokenOutput> {
const workspace =

View File

@ -42,10 +42,8 @@ import { UserVarsService } from 'src/engine/core-modules/user/user-vars/services
import { User } from 'src/engine/core-modules/user/user.entity';
import { userValidator } from 'src/engine/core-modules/user/user.validate';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
import { workspaceValidator } from 'src/engine/core-modules/workspace/workspace.validate';
import { AuthUser } from 'src/engine/decorators/auth/auth-user.decorator';
import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator';
import { OriginHeader } from 'src/engine/decorators/auth/origin-header.decorator';
import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard';
import { SettingPermissionType } from 'src/engine/metadata-modules/permissions/constants/setting-permission-type.constants';
import { PermissionsService } from 'src/engine/metadata-modules/permissions/permissions.service';
@ -355,15 +353,8 @@ export class UserResolver {
@ResolveField(() => OnboardingStatus)
async onboardingStatus(
@Parent() user: User,
@OriginHeader() origin: string,
@AuthWorkspace() workspace: Workspace,
): Promise<OnboardingStatus> {
const workspace =
await this.domainManagerService.getWorkspaceByOriginOrDefaultWorkspace(
origin,
);
workspaceValidator.assertIsDefinedOrThrow(workspace);
return this.onboardingService.getOnboardingStatus(user, workspace);
}

View File

@ -43,7 +43,6 @@ import { AuthApiKey } from 'src/engine/decorators/auth/auth-api-key.decorator';
import { AuthUserWorkspaceId } from 'src/engine/decorators/auth/auth-user-workspace-id.decorator';
import { AuthUser } from 'src/engine/decorators/auth/auth-user.decorator';
import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator';
import { OriginHeader } from 'src/engine/decorators/auth/origin-header.decorator';
import { SettingsPermissionsGuard } from 'src/engine/guards/settings-permissions.guard';
import { UserAuthGuard } from 'src/engine/guards/user-auth.guard';
import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard';
@ -89,19 +88,12 @@ export class WorkspaceResolver {
}
@Mutation(() => Workspace)
@UseGuards(UserAuthGuard)
@UseGuards(UserAuthGuard, WorkspaceAuthGuard)
async activateWorkspace(
@Args('data') data: ActivateWorkspaceInput,
@AuthUser() user: User,
@OriginHeader() origin: string,
@AuthWorkspace() workspace: Workspace,
) {
const workspace =
await this.domainManagerService.getWorkspaceByOriginOrDefaultWorkspace(
origin,
);
workspaceValidator.assertIsDefinedOrThrow(workspace);
return await this.workspaceService.activateWorkspace(user, workspace, data);
}
@ -292,7 +284,7 @@ export class WorkspaceResolver {
@Query(() => PublicWorkspaceDataOutput)
async getPublicWorkspaceDataByDomain(
@OriginHeader() origin: string,
@Args('origin') origin: string,
): Promise<PublicWorkspaceDataOutput | undefined> {
try {
const workspace =

View File

@ -1,11 +0,0 @@
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
import { getRequest } from 'src/utils/extract-request';
export const OriginHeader = createParamDecorator(
(data: unknown, ctx: ExecutionContext) => {
const request = getRequest(ctx);
return request.headers['origin'];
},
);