[FRONT COMPONENT] Add Front component token generation (#17855)
closes https://github.com/twentyhq/core-team-issues/issues/2180 https://github.com/user-attachments/assets/a898455d-eb1c-4d22-b585-785e98fc38a7
This commit is contained in:
+36
-7
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user