From 051edb5f781cabf27a27c68c2584065d497983e7 Mon Sep 17 00:00:00 2001 From: Jackson Roberts Date: Tue, 14 Apr 2026 03:06:39 +0000 Subject: [PATCH] chore: add setup-admin script --- api/setup-admin.ts | 66 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 api/setup-admin.ts diff --git a/api/setup-admin.ts b/api/setup-admin.ts new file mode 100644 index 0000000..e9c8d23 --- /dev/null +++ b/api/setup-admin.ts @@ -0,0 +1,66 @@ +import { PrismaClient } from './generated/prisma'; + +const prisma = new PrismaClient(); + +async function main() { + try { + // Create the admin role if it doesn't exist + const adminRole = await prisma.role.upsert({ + where: { moniker: 'admin' }, + update: {}, + create: { + title: 'Administrator', + moniker: 'admin', + permissions: JSON.stringify({ + // Full permissions for admin + '*': true, + }), + }, + }); + + console.log('✓ Admin role created/verified:', adminRole); + + // Find the user with jackson.roberts@totaltech.net + const user = await prisma.user.findUnique({ + where: { email: 'jackson.roberts@totaltech.net' }, + include: { roles: true }, + }); + + if (!user) { + console.error( + '✗ User jackson.roberts@totaltech.net not found. Please ensure the user exists.', + ); + process.exit(1); + } + + console.log('✓ User found:', user.email); + + // Check if user already has admin role + const hasAdminRole = user.roles.some((r) => r.moniker === 'admin'); + + if (hasAdminRole) { + console.log('✓ User already has admin role'); + } else { + // Assign admin role to user + const updatedUser = await prisma.user.update({ + where: { id: user.id }, + data: { + roles: { + connect: { id: adminRole.id }, + }, + }, + include: { roles: true }, + }); + + console.log('✓ Admin role assigned to jackson.roberts@totaltech.net'); + console.log('✓ User roles:', updatedUser.roles.map((r) => r.moniker)); + } + } catch (error) { + console.error('✗ Error:', error); + process.exit(1); + } finally { + await prisma.$disconnect(); + } +} + +main();