From 13f98cc32c804c786c71b10dc4cf029d7795be76 Mon Sep 17 00:00:00 2001 From: Elias Schneider Date: Mon, 14 Nov 2022 17:03:45 +0100 Subject: [PATCH] feat: add administrator guard --- backend/prisma/schema.prisma | 9 +++++---- backend/src/auth/guard/isAdmin.guard.ts | 10 ++++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 backend/src/auth/guard/isAdmin.guard.ts diff --git a/backend/prisma/schema.prisma b/backend/prisma/schema.prisma index 0512c99..bb2b8af 100644 --- a/backend/prisma/schema.prisma +++ b/backend/prisma/schema.prisma @@ -12,10 +12,11 @@ model User { createdAt DateTime @default(now()) updatedAt DateTime @updatedAt - email String @unique - password String - firstName String? - lastName String? + email String @unique + password String + isAdministrator Boolean @default(false) + firstName String? + lastName String? shares Share[] refreshTokens RefreshToken[] diff --git a/backend/src/auth/guard/isAdmin.guard.ts b/backend/src/auth/guard/isAdmin.guard.ts new file mode 100644 index 0000000..b3bf251 --- /dev/null +++ b/backend/src/auth/guard/isAdmin.guard.ts @@ -0,0 +1,10 @@ +import { CanActivate, ExecutionContext, Injectable } from "@nestjs/common"; +import { User } from "@prisma/client"; + +@Injectable() +export class AdministratorGuard implements CanActivate { + canActivate(context: ExecutionContext): boolean { + const { user }: { user: User } = context.switchToHttp().getRequest(); + return user.isAdministrator; + } +}