mirror of
https://github.com/lingble/twenty.git
synced 2025-10-29 20:02:29 +00:00
This PR fixes #4588 --------- Co-authored-by: Félix Malfait <felix@twenty.com> Co-authored-by: Charles Bochet <charles@twenty.com>
36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common';
|
|
|
|
import { AccessTokenService } from 'src/engine/core-modules/auth/token/services/access-token.service';
|
|
import { WorkspaceCacheStorageService } from 'src/engine/workspace-cache-storage/workspace-cache-storage.service';
|
|
|
|
@Injectable()
|
|
export class JwtAuthGuard implements CanActivate {
|
|
constructor(
|
|
private readonly accessTokenService: AccessTokenService,
|
|
private readonly workspaceStorageCacheService: WorkspaceCacheStorageService,
|
|
) {}
|
|
|
|
async canActivate(context: ExecutionContext): Promise<boolean> {
|
|
const request = context.switchToHttp().getRequest();
|
|
|
|
try {
|
|
const data = await this.accessTokenService.validateToken(request);
|
|
const metadataVersion =
|
|
await this.workspaceStorageCacheService.getMetadataVersion(
|
|
data.workspace.id,
|
|
);
|
|
|
|
request.user = data.user;
|
|
request.apiKey = data.apiKey;
|
|
request.workspace = data.workspace;
|
|
request.workspaceId = data.workspace.id;
|
|
request.workspaceMetadataVersion = metadataVersion;
|
|
request.workspaceMemberId = data.workspaceMemberId;
|
|
|
|
return true;
|
|
} catch (error) {
|
|
return false;
|
|
}
|
|
}
|
|
}
|