Создаём свой декоратор @User:
// user.decorator.ts
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
import { JWTPayload } from '@/api/auth/auth.service';
export const User = createParamDecorator(
(userField: keyof JWTPayload, ctx: ExecutionContext) => {
const request = ctx.switchToHttp().getRequest();
const user: JWTPayload | undefined = request.user;
return userField ? user?.[userField] : user;
},
);
Используем так:
export class AuthController {
constructor(private authService: AuthService) {}
@UseGuards(AuthGuard("jwt"))
@Get()
getPayload(@User() user: JWTPayload) {
// здесь мне нужно получить payload который был возвращен из jwt стратегии.
}
@UseGuards(AuthGuard("jwt"))
@Get(':id')
getUserId(@User('id') userId: string) {
// здесь мне нужно получить payload который был возвращен из jwt стратегии.
}
}