nitin
2026-02-13 19:48:09 +05:30
committed by GitHub
parent 5cc0c03262
commit 463ce43442
26 changed files with 845 additions and 174 deletions
@@ -1,14 +1,19 @@
import { UseGuards, UseInterceptors } from '@nestjs/common';
import { Inject, UseGuards, UseInterceptors } from '@nestjs/common';
import { Args, Mutation, Query } from '@nestjs/graphql';
import { PermissionFlagType } from 'twenty-shared/constants';
import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars';
import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity';
import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator';
import { MetadataResolver } from 'src/engine/api/graphql/graphql-config/decorators/metadata-resolver.decorator';
import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars';
import { ApplicationTokenService } from 'src/engine/core-modules/auth/token/services/application-token.service';
import { type UserEntity } from 'src/engine/core-modules/user/user.entity';
import { type WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity';
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 { NoPermissionGuard } from 'src/engine/guards/no-permission.guard';
import { SettingsPermissionGuard } from 'src/engine/guards/settings-permission.guard';
import { UserAuthGuard } from 'src/engine/guards/user-auth.guard';
import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard';
import { fromFlatFrontComponentToFrontComponentDto } from 'src/engine/metadata-modules/flat-front-component/utils/from-flat-front-component-to-front-component-dto.util';
import { CreateFrontComponentInput } from 'src/engine/metadata-modules/front-component/dtos/create-front-component.input';
@@ -25,7 +30,12 @@ import { WorkspaceMigrationGraphqlApiExceptionInterceptor } from 'src/engine/wor
)
@MetadataResolver(() => FrontComponentDTO)
export class FrontComponentResolver {
constructor(private readonly frontComponentService: FrontComponentService) {}
constructor(
@Inject(FrontComponentService)
private readonly frontComponentService: FrontComponentService,
@Inject(ApplicationTokenService)
private readonly applicationTokenService: ApplicationTokenService,
) {}
@Query(() => [FrontComponentDTO])
@UseGuards(NoPermissionGuard)
@@ -36,12 +46,31 @@ export class FrontComponentResolver {
}
@Query(() => FrontComponentDTO, { nullable: true })
@UseGuards(NoPermissionGuard)
@UseGuards(UserAuthGuard, NoPermissionGuard)
async frontComponent(
@Args('id', { type: () => UUIDScalarType }) id: string,
@AuthWorkspace() workspace: WorkspaceEntity,
@AuthUser() user: UserEntity,
@AuthUserWorkspaceId() userWorkspaceId: string,
): Promise<FrontComponentDTO | null> {
return await this.frontComponentService.findById(id, workspace.id);
const dto = await this.frontComponentService.findById(id, workspace.id);
if (!dto) {
return null;
}
const tokenPair =
await this.applicationTokenService.generateApplicationTokenPair({
applicationId: dto.applicationId,
workspaceId: workspace.id,
userWorkspaceId,
userId: user.id,
});
return {
...dto,
applicationTokenPair: tokenPair,
};
}
@Mutation(() => FrontComponentDTO)