Доброе утро,
Я пытаюсь создать собственный декоратор: user.decorator.ts
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
export const User = createParamDecorator(
(data: string, ctx: ExecutionContext) => {
const request = ctx.switchToHttp().getRequest();
const user = request.user;
return data ? user && user[data] : user;
},
);
user.entity.ts
import { Entity, PrimaryGeneratedColumn, Column, BeforeInsert } from "typeorm";
import * as bcrypt from 'bcryptjs';
import * as jwt from 'jsonwebtoken';
import { UserRO } from "./user.dto";
@Entity("user")
export class UserEntity {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column({
type: 'varchar',
length: 50,
unique: true,
})
username: string;
@Column('text')
password: string;
@Column('text')
role: string;
(...)
}
И, наконец, user.controller.ts
(только полезная часть):
(...)
@Post('login')
@UsePipes(new ValidationPipe())
login(@Body() data: UserDTO, @User('role') role: string) {
console.log(`hello ${role}`);
return this.userService.login(data);
(...)
}
Моя проблема: console.log (...) возвращает мне hello undefined
, когда ожидаемый ответ должен быть hello admin
(роль администратора - роль пользователя в базе данных)
РЕДАКТИРОВАТЬ: Я также попытался console.log(user)
в моем декораторе, и он тоже не определен.
EDIT2: Мой HttpErrorFilter также говорит: Cannot read property 'role' of undefined
Я внимательно следил за документацией и не могу понять, где проблема (https://docs.nestjs.com/custom-decorators).
Спасибо за ваше время.