![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/lavocat.ca/public_html/scripts/ |
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
async function setupPermissions() {
console.log('🔧 Setting up permissions for all roles...');
// Define all permissions needed
const permissions = [
// Case management permissions
{ role: 'SUPERADMIN', resource: 'cases', action: 'read' },
{ role: 'SUPERADMIN', resource: 'cases', action: 'write' },
{ role: 'SUPERADMIN', resource: 'cases', action: 'delete' },
{ role: 'ADMIN', resource: 'cases', action: 'read' },
{ role: 'ADMIN', resource: 'cases', action: 'write' },
{ role: 'ADMIN', resource: 'cases', action: 'delete' },
{ role: 'LAWYER', resource: 'cases', action: 'read' },
{ role: 'LAWYER', resource: 'cases', action: 'write' },
{ role: 'SECRETARY', resource: 'cases', action: 'read' },
{ role: 'CLERK', resource: 'cases', action: 'read' },
{ role: 'ASSISTANT', resource: 'cases', action: 'read' },
// User management permissions
{ role: 'SUPERADMIN', resource: 'users', action: 'read' },
{ role: 'SUPERADMIN', resource: 'users', action: 'write' },
{ role: 'SUPERADMIN', resource: 'users', action: 'delete' },
{ role: 'ADMIN', resource: 'users', action: 'read' },
{ role: 'ADMIN', resource: 'users', action: 'write' },
// Document permissions
{ role: 'SUPERADMIN', resource: 'documents', action: 'read' },
{ role: 'SUPERADMIN', resource: 'documents', action: 'write' },
{ role: 'SUPERADMIN', resource: 'documents', action: 'delete' },
{ role: 'ADMIN', resource: 'documents', action: 'read' },
{ role: 'ADMIN', resource: 'documents', action: 'write' },
{ role: 'ADMIN', resource: 'documents', action: 'delete' },
{ role: 'LAWYER', resource: 'documents', action: 'read' },
{ role: 'LAWYER', resource: 'documents', action: 'write' },
{ role: 'SECRETARY', resource: 'documents', action: 'read' },
{ role: 'SECRETARY', resource: 'documents', action: 'write' },
{ role: 'CLERK', resource: 'documents', action: 'read' },
{ role: 'ASSISTANT', resource: 'documents', action: 'read' },
// Analytics permissions
{ role: 'SUPERADMIN', resource: 'analytics', action: 'read' },
{ role: 'ADMIN', resource: 'analytics', action: 'read' },
// Newsletter permissions
{ role: 'SUPERADMIN', resource: 'newsletter', action: 'read' },
{ role: 'SUPERADMIN', resource: 'newsletter', action: 'write' },
{ role: 'ADMIN', resource: 'newsletter', action: 'read' },
{ role: 'ADMIN', resource: 'newsletter', action: 'write' },
// Impersonation permissions
{ role: 'SUPERADMIN', resource: 'impersonation', action: 'write' },
// System administration
{ role: 'SUPERADMIN', resource: 'system', action: 'read' },
{ role: 'SUPERADMIN', resource: 'system', action: 'write' },
];
try {
console.log(`📝 Creating ${permissions.length} permissions...`);
for (const perm of permissions) {
await prisma.permission.upsert({
where: {
role_resource_action: {
role: perm.role,
resource: perm.resource,
action: perm.action
}
},
update: {},
create: {
role: perm.role,
resource: perm.resource,
action: perm.action,
conditions: null
}
});
}
console.log('✅ Permissions setup completed successfully!');
// Verify SUPERADMIN permissions
const superAdminPerms = await prisma.permission.findMany({
where: { role: { in: ['SUPERADMIN', 'SUPERADMIN'] } }
});
console.log(`🔍 SUPERADMIN has ${superAdminPerms.length} permissions:`);
superAdminPerms.forEach(perm => {
console.log(` - ${perm.resource}:${perm.action}`);
});
} catch (error) {
console.error('❌ Error setting up permissions:', error);
} finally {
await prisma.$disconnect();
}
}
setupPermissions();