Skip to content

Commit a07fa6b

Browse files
authored
Merge pull request #50 from VMihalov/feature/many-roles
Update auth guard arg types and update the check of role array is empty
2 parents 4a5065d + 880be0d commit a07fa6b

File tree

6 files changed

+16
-9
lines changed

6 files changed

+16
-9
lines changed

generators/auth/templates/mongodb/jwt/src/decorators/auth.decorator.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { applyDecorators, SetMetadata, UseGuards } from '@nestjs/common';
22
import JwtAccessGuard from '@guards/jwt-access.guard';
33
import RolesGuard from '@guards/roles.guard';
4-
import { RolesAuthType } from '@decorators/roles.decorator';
4+
import { RolesEnum } from '@decorators/roles.decorator';
55

6-
export default function Auth(roles: RolesAuthType) {
6+
export default function Auth(...roles: RolesEnum[]) {
77
return applyDecorators(
88
SetMetadata('roles', roles),
99
UseGuards(JwtAccessGuard, RolesGuard),

generators/auth/templates/mongodb/jwt/src/decorators/roles.decorator.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,4 @@ export enum RolesEnum {
55
USER = 'user'
66
}
77

8-
export type RolesAuthType = RolesEnum[] | RolesEnum | void;
9-
108
export const Roles = (...roles: RolesEnum[]) => SetMetadata('roles', roles);

generators/auth/templates/mongodb/jwt/src/guards/roles.guard.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import _ from 'lodash';
12
import { Request } from 'express';
23
import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common';
34
import { Reflector } from '@nestjs/core';
@@ -14,7 +15,7 @@ export default class RolesGuard implements CanActivate {
1415
async canActivate(context: ExecutionContext): Promise<boolean> {
1516
const roles = this.reflector.get<RolesEnum[]>('roles', context.getHandler());
1617

17-
if (!roles) {
18+
if (_.isEmpty(roles)) {
1819
return true;
1920
}
2021

generators/auth/templates/mongodb/oauth2/src/guards/roles.guard.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import _ from 'lodash';
12
import {
23
CanActivate,
34
ExecutionContext,
@@ -6,17 +7,21 @@ import {
67
} from '@nestjs/common';
78
import { Reflector } from '@nestjs/core';
89

10+
import { RolesEnum } from '@decorators/roles.decorator';
11+
912
@Injectable()
1013
export default class RolesGuard implements CanActivate {
1114
constructor(
1215
private reflector: Reflector,
1316
) {}
1417

1518
async canActivate(context: ExecutionContext): Promise<boolean> {
16-
const roles = this.reflector.get<string[]>('roles', context.getHandler());
17-
if (!roles) {
19+
const roles = this.reflector.get<RolesEnum[]>('roles', context.getHandler());
20+
21+
if (_.isEmpty(roles)) {
1822
return true;
1923
}
24+
2025
const req = context.switchToHttp().getRequest();
2126
if (req.isUnauthenticated()) {
2227
throw new UnauthorizedException('Login please');

generators/auth/templates/mongodb/passportLocal/src/guards/roles.guard.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import _ from 'lodash';
12
import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common';
23
import { Reflector } from '@nestjs/core';
34
import {RolesEnum} from "@decorators/roles.decorator";
@@ -10,7 +11,8 @@ export default class RolesGuard implements CanActivate {
1011

1112
async canActivate(context: ExecutionContext): Promise<boolean> {
1213
const roles = this.reflector.get<RolesEnum[]>('roles', context.getHandler());
13-
if (!roles) {
14+
15+
if (_.isEmpty(roles)) {
1416
return true;
1517
}
1618

generators/auth/templates/mysql/oauth2/src/guards/roles.guard.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import _ from 'lodash';
12
import {
23
CanActivate,
34
ExecutionContext,
@@ -17,7 +18,7 @@ export default class RolesGuard implements CanActivate {
1718
async canActivate(context: ExecutionContext): Promise<boolean> {
1819
const roles = this.reflector.get<RolesEnum[]>('roles', context.getHandler());
1920

20-
if (!roles) {
21+
if (_.isEmpty(roles)) {
2122
return true;
2223
}
2324

0 commit comments

Comments
 (0)