import { Injectable, CanActivate, ExecutionContext, UnauthorizedException } from '@nestjs/common'; import { SyncIdentityHandler } from '../../application/handlers/user/sync-identity.handler'; import { IdentityData } from '../../../../core/auth/interfaces/identity-data'; @Injectable() export class CurrentUserGuard implements CanActivate { constructor( private readonly syncIdentityHandler: SyncIdentityHandler, ) {} async canActivate(context: ExecutionContext): Promise { const request = context.switchToHttp().getRequest() as any; const identity = request.identity as IdentityData | undefined; if (!identity) { throw new UnauthorizedException('Identity is missing.'); } const user = await this.syncIdentityHandler.execute(identity); // attach domain user as currentUser request.currentUser = user; return true; } }