Вместо использования Guard вы можете создать свой собственный декоратор для получения данных:
export const Authorization = createParamDecorator((_, request: any) => {
const { authorization: accessToken } = request.headers;
try {
const decoded = jwt.verify(accessToken, process.env.JWT_HASH);
return pick(decoded, 'userId');
} catch (ex) {
throw new InvalidToken();
}
});
export interface AuthUser {
userId: string;
}
и передать его на ваш контроллер следующим образом:
@Post()
createFeedback(
@Body() body: FeedbackBody,
@Authorization() user: AuthUser,
): Promise<Feedback> {
body.userId = user.userId;
return this.feedbackService.feedback(body, user);
}
Это может действовать какохранник, потому что когда ваш токен недействителен, он выдаст исключение