feat: add migration to make user tenantId nullable for platform-level superadmin
This commit is contained in:
@@ -0,0 +1,12 @@
|
|||||||
|
-- AlterColumn: make tenantId nullable for platform-level users (superadmin)
|
||||||
|
ALTER TABLE "users" ALTER COLUMN "tenantId" DROP NOT NULL;
|
||||||
|
|
||||||
|
-- Drop existing FK and recreate with ON DELETE SET NULL
|
||||||
|
ALTER TABLE "users" DROP CONSTRAINT "users_tenantId_fkey";
|
||||||
|
ALTER TABLE "users" ADD CONSTRAINT "users_tenantId_fkey"
|
||||||
|
FOREIGN KEY ("tenantId") REFERENCES "tenants"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- Recreate unique index to allow multiple NULL tenantId values
|
||||||
|
DROP INDEX IF EXISTS "users_tenantId_email_key";
|
||||||
|
CREATE UNIQUE INDEX "users_tenantId_email_key" ON "users"("tenantId", "email") WHERE "tenantId" IS NOT NULL;
|
||||||
|
CREATE UNIQUE INDEX "users_email_key" ON "users"("email") WHERE "tenantId" IS NULL;
|
||||||
@@ -102,7 +102,7 @@ async function main() {
|
|||||||
|
|
||||||
// ─── Super Admin (platform-level, no tenant) ───────────
|
// ─── Super Admin (platform-level, no tenant) ───────────
|
||||||
const superAdmin = await prisma.user.create({
|
const superAdmin = await prisma.user.create({
|
||||||
data: { tenantId: tenant.id, email: 'superadmin@fiberops.dev', password: await hashPassword('admin123!'), firstName: 'Super', lastName: 'Admin' },
|
data: { tenantId: null, email: 'superadmin@fiberops.dev', password: await hashPassword('admin123!'), firstName: 'Super', lastName: 'Admin' },
|
||||||
});
|
});
|
||||||
await prisma.userRole.create({ data: { userId: superAdmin.id, role: 'super_admin' } });
|
await prisma.userRole.create({ data: { userId: superAdmin.id, role: 'super_admin' } });
|
||||||
console.log(`Super Admin: superadmin@fiberops.dev (super_admin)`);
|
console.log(`Super Admin: superadmin@fiberops.dev (super_admin)`);
|
||||||
|
|||||||
Reference in New Issue
Block a user