Update role guards to differentiate between admin and super admin roles

This commit is contained in:
faris Aljohari
2024-05-11 21:19:53 +03:00
parent e7024a5cb8
commit ea19361a59
6 changed files with 43 additions and 19 deletions
+4 -4
View File
@@ -4,13 +4,13 @@ import { AuthGuard } from '@nestjs/passport';
export class AdminRoleGuard extends AuthGuard('jwt') {
handleRequest(err, user) {
const isAdmin = user.roles.some(
(role) =>
role.type === RoleType.SUPER_ADMIN || role.type === RoleType.ADMIN,
);
if (err || !user) {
throw err || new UnauthorizedException();
} else {
const isAdmin = user.roles.some(
(role) =>
role.type === RoleType.SUPER_ADMIN || role.type === RoleType.ADMIN,
);
if (!isAdmin) {
throw new BadRequestException('Only admin role can access this route');
}
+21
View File
@@ -0,0 +1,21 @@
import { RoleType } from '@app/common/constants/role.type.enum';
import { BadRequestException, UnauthorizedException } from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
export class SuperAdminRoleGuard extends AuthGuard('jwt') {
handleRequest(err, user) {
if (err || !user) {
throw err || new UnauthorizedException();
} else {
const isSuperAdmin = user.roles.some(
(role) => role.type === RoleType.SUPER_ADMIN,
);
if (!isSuperAdmin) {
throw new BadRequestException(
'Only super admin role can access this route',
);
}
}
return user;
}
}
+6 -6
View File
@@ -4,15 +4,15 @@ import { AuthGuard } from '@nestjs/passport';
export class UserRoleGuard extends AuthGuard('jwt') {
handleRequest(err, user) {
const isUserOrAdmin = user.roles.some(
(role) =>
role.type === RoleType.SUPER_ADMIN ||
role.type === RoleType.ADMIN ||
role.type === RoleType.USER,
);
if (err || !user) {
throw err || new UnauthorizedException();
} else {
const isUserOrAdmin = user.roles.some(
(role) =>
role.type === RoleType.SUPER_ADMIN ||
role.type === RoleType.ADMIN ||
role.type === RoleType.USER,
);
if (!isUserOrAdmin) {
throw new BadRequestException(
'Only admin or user role can access this route',