From c161553d1df68eb571049fba3cbbc55c883a71c8 Mon Sep 17 00:00:00 2001 From: Catalin Pit Date: Tue, 17 Dec 2024 13:35:59 +0200 Subject: [PATCH] feat: add disabled property for user (#1546) --- apps/web/src/components/forms/signin.tsx | 1 + packages/lib/next-auth/auth-options.ts | 4 ++++ packages/lib/next-auth/error-codes.ts | 1 + .../migration.sql | 2 ++ packages/prisma/schema.prisma | 1 + 5 files changed, 9 insertions(+) create mode 100644 packages/prisma/migrations/20241217103826_add_disabled_property_user_table/migration.sql diff --git a/apps/web/src/components/forms/signin.tsx b/apps/web/src/components/forms/signin.tsx index e4057b16ac..82cd645921 100644 --- a/apps/web/src/components/forms/signin.tsx +++ b/apps/web/src/components/forms/signin.tsx @@ -53,6 +53,7 @@ const ERROR_MESSAGES: Partial> = { [ErrorCode.INCORRECT_TWO_FACTOR_BACKUP_CODE]: 'The backup code provided is incorrect', [ErrorCode.UNVERIFIED_EMAIL]: 'This account has not been verified. Please verify your account before signing in.', + [ErrorCode.ACCOUNT_DISABLED]: 'This account has been disabled. Please contact support.', }; const TwoFactorEnabledErrorCode = ErrorCode.TWO_FACTOR_MISSING_CREDENTIALS; diff --git a/packages/lib/next-auth/auth-options.ts b/packages/lib/next-auth/auth-options.ts index f4dc0a8fe2..3559467efc 100644 --- a/packages/lib/next-auth/auth-options.ts +++ b/packages/lib/next-auth/auth-options.ts @@ -121,6 +121,10 @@ export const NEXT_AUTH_OPTIONS: AuthOptions = { throw new Error(ErrorCode.UNVERIFIED_EMAIL); } + if (user.disabled) { + throw new Error(ErrorCode.ACCOUNT_DISABLED); + } + return { id: Number(user.id), email: user.email, diff --git a/packages/lib/next-auth/error-codes.ts b/packages/lib/next-auth/error-codes.ts index 6e1b7488bd..a13dae3bbe 100644 --- a/packages/lib/next-auth/error-codes.ts +++ b/packages/lib/next-auth/error-codes.ts @@ -20,4 +20,5 @@ export const ErrorCode = { MISSING_ENCRYPTION_KEY: 'MISSING_ENCRYPTION_KEY', MISSING_BACKUP_CODE: 'MISSING_BACKUP_CODE', UNVERIFIED_EMAIL: 'UNVERIFIED_EMAIL', + ACCOUNT_DISABLED: 'ACCOUNT_DISABLED', } as const; diff --git a/packages/prisma/migrations/20241217103826_add_disabled_property_user_table/migration.sql b/packages/prisma/migrations/20241217103826_add_disabled_property_user_table/migration.sql new file mode 100644 index 0000000000..598142f43a --- /dev/null +++ b/packages/prisma/migrations/20241217103826_add_disabled_property_user_table/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "User" ADD COLUMN "disabled" BOOLEAN NOT NULL DEFAULT false; diff --git a/packages/prisma/schema.prisma b/packages/prisma/schema.prisma index 100e2d1e6d..efafbb3e60 100644 --- a/packages/prisma/schema.prisma +++ b/packages/prisma/schema.prisma @@ -42,6 +42,7 @@ model User { roles Role[] @default([USER]) identityProvider IdentityProvider @default(DOCUMENSO) avatarImageId String? + disabled Boolean @default(false) accounts Account[] sessions Session[]