Как получить доступ / внедрить базу данных в гнездо. js Auth Guard? - PullRequest
0 голосов
/ 18 июня 2020

У меня есть приложение js, в котором в настоящее время есть пользователь и компания, и у каждой компании есть пользователь-владелец. В моем случае я хочу написать собственный декоратор для использования в каждом методе контроллера, чтобы узнать, является ли пользователь владельцем этой компании.
поэтому я начинаю писать собственный Guard следующим образом:

@Injectable()
export class CompanyGuard implements CanActivate {
    constructor() { }
    canActivate(context: ExecutionContext) {
        const request = context.switchToHttp().getRequest();
        const user = request.user;
        if (user) {
            console.log(user);
            return true;
        } else {
            throw new HttpException('you have no access to this company', HttpStatus.UNAUTHORIZED)
        }
    }
}

, и я использую его так:

@UseGuards(JwtAuthGuard, CompanyGuard)
@Post('get-data/:companyId/')
getData(@Req() request){}

Я хочу получить доступ к базе данных mon goose в CompanyGuard и проверить доступ в базе данных, как я могу это сделать?

1 Ответ

1 голос
/ 19 июня 2020

Внедрение зависимостей работает в Guards так же, как и в любом другом провайдере (сервисе). Таким образом, вы можете просто ввести желаемую модель через конструктор:

constructor(@InjectModel(Company.name) private companyModel: Model<company>) {}
...