Files
backend/src/modules/auth/presentation/jwt-auth.guard.ts
T

24 lines
765 B
TypeScript

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<boolean> {
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);
}
}