Fix missing encoding in workspace-logo, members, person (#6510)

This commit is contained in:
Weiko
2024-08-02 15:18:48 +02:00
committed by GitHub
parent 0c036efcc4
commit 5870979bfa
13 changed files with 176 additions and 70 deletions

View File

@ -8,6 +8,7 @@ import { NestjsQueryTypeOrmModule } from '@ptc-org/nestjs-query-typeorm';
import { TypeORMModule } from 'src/database/typeorm/typeorm.module';
import { TypeORMService } from 'src/database/typeorm/typeorm.service';
import { FileUploadModule } from 'src/engine/core-modules/file/file-upload/file-upload.module';
import { FileModule } from 'src/engine/core-modules/file/file.module';
import { KeyValuePair } from 'src/engine/core-modules/key-value-pair/key-value-pair.entity';
import { OnboardingModule } from 'src/engine/core-modules/onboarding/onboarding.module';
import { UserVarsModule } from 'src/engine/core-modules/user/user-vars/user-vars.module';
@ -26,6 +27,7 @@ import { UserService } from './services/user.service';
imports: [
NestjsQueryTypeOrmModule.forFeature([User], 'core'),
TypeORMModule,
FileModule,
],
resolvers: userAutoResolverOpts,
}),

View File

@ -20,6 +20,7 @@ import { FileFolder } from 'src/engine/core-modules/file/interfaces/file-folder.
import { SupportDriver } from 'src/engine/integrations/environment/interfaces/support.interface';
import { FileUploadService } from 'src/engine/core-modules/file/file-upload/services/file-upload.service';
import { FileService } from 'src/engine/core-modules/file/services/file.service';
import { OnboardingStatus } from 'src/engine/core-modules/onboarding/enums/onboarding-status.enum';
import { OnboardingService } from 'src/engine/core-modules/onboarding/onboarding.service';
import { WorkspaceMember } from 'src/engine/core-modules/user/dtos/workspace-member.dto';
@ -55,6 +56,7 @@ export class UserResolver {
private readonly onboardingService: OnboardingService,
private readonly loadServiceWithWorkspaceContext: LoadServiceWithWorkspaceContext,
private readonly userVarService: UserVarsService,
private readonly fileService: FileService,
) {}
@Query(() => User)
@ -68,6 +70,20 @@ export class UserResolver {
assert(user, 'User not found');
user.workspaces = await Promise.all(
user.workspaces.map(async (userWorkspace) => {
if (userWorkspace.workspace.logo) {
const workspaceLogoToken = await this.fileService.encodeFileToken({
workspace_id: userWorkspace.workspace.id,
});
userWorkspace.workspace.logo = `${userWorkspace.workspace.logo}?token=${workspaceLogoToken}`;
}
return userWorkspace;
}),
);
return user;
}
@ -99,7 +115,18 @@ export class UserResolver {
async workspaceMember(
@Parent() user: User,
): Promise<WorkspaceMember | undefined> {
return this.userService.loadWorkspaceMember(user);
const workspaceMember = await this.userService.loadWorkspaceMember(user);
if (workspaceMember && workspaceMember.avatarUrl) {
const avatarUrlToken = await this.fileService.encodeFileToken({
workspace_member_id: workspaceMember.id,
workspace_id: user.defaultWorkspace.id,
});
workspaceMember.avatarUrl = `${workspaceMember.avatarUrl}?token=${avatarUrlToken}`;
}
return workspaceMember;
}
@ResolveField(() => String, {