File size: 579 Bytes
2f0e1b7
 
6a7bf05
2f0e1b7
 
 
 
 
6a7bf05
f6445dd
2f0e1b7
6a7bf05
2f0e1b7
 
6a7bf05
 
 
2f0e1b7
 
 
6a7bf05
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import { Role } from "@common/enums/role.enum";
import { IJwtLoginPayload } from "@common/interfaces/jwt-payload.interface";
import { genGuard } from "@lib/guards/gen-guard";

type AdminGuardMiddlewareProps = {
  roles?: Role[];
};

export const AdminGuardMiddleware = genGuard(
  async (args: AdminGuardMiddlewareProps = {}, payload: IJwtLoginPayload) => {
    if (payload.type !== "admin") {
      return false;
    }

    if (args?.roles && args?.roles.length > 0) {
      if (!args.roles.includes(payload.role)) {
        return false;
      }
    }

    return true;
  }
);