import { ExecutionContext, Injectable } from '@nestjs/common'; import { AuthGuard } from '@nestjs/passport'; import { RequestContextService } from '../../../common/logging/request-context.service'; import { AccessPayload } from '../application/auth.types'; @Injectable() export class JwtAuthGuard extends AuthGuard('jwt') { constructor(private readonly requestContext: RequestContextService) { super(); } async canActivate(context: ExecutionContext): Promise { const allowed = await super.canActivate(context); const request = context .switchToHttp() .getRequest<{ user?: AccessPayload }>(); if (request.user?.sub) { this.requestContext.set({ userId: request.user.sub }); } return Boolean(allowed); } }