24 lines
765 B
TypeScript
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);
|
|
}
|
|
}
|