generator-nest-js-boilerplate
Version:
This generator will help you to build your own Nest.js Mongodb API using TypeScript 4
31 lines (24 loc) • 1.08 kB
text/typescript
import { CanActivate, ExecutionContext, Injectable, NotFoundException } from '@nestjs/common';
import { JwtService } from '@nestjs/jwt';
import CaslAbilityFactory from '../casl-ability/casl-ability.factory';
import Action from '../casl-ability/enums/casl-action.enum';
import { ConfigService } from '@nestjs/config';
()
export default class PoliciesGuard implements CanActivate {
constructor(
private caslAbilityFactory: CaslAbilityFactory,
private jwtService: JwtService,
private configService: ConfigService,
) {}
async canActivate(context: ExecutionContext): Promise<boolean> {
const { headers } = context.switchToHttp().getRequest();
const token = headers.authorization.split(' ')[1];
const user = await this.jwtService.verifyAsync(
token,
{ secret: this.configService.get<string>('ACCESS_TOKEN') || '283f01ccce922bcc2399e7f8ded981285963cec349daba382eb633c1b3a5f282' },
);
const ability = this.caslAbilityFactory.createForUser(user);
if (ability.can(Action.Manage, 'all')) return true;
return false;
}
}