7943141d03
## Summary Add support for multi-workspace feature and adjust configurations and states accordingly. - Introduced new state isMultiWorkspaceEnabledState. - Updated ClientConfigProviderEffect component to handle multi-workspace. - Modified GraphQL schema and queries to include multi-workspace related configurations. - Adjusted server environment variables and their respective documentation to support multi-workspace toggle. - Updated server-side logic to handle new multi-workspace configurations and conditions.
37 lines
1.2 KiB
TypeScript
37 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.validateTokenByRequest(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;
|
|
}
|
|
}
|
|
}
|