chore: add setup-admin script
This commit is contained in:
@@ -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();
|
||||
Reference in New Issue
Block a user