![]() 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.quebec/private_html/scripts/ |
const { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient();
async function testImpersonation() {
try {
console.log('๐งช Testing impersonation functionality...\n');
// 1. Check if impersonation sessions table exists
console.log('1. Checking impersonation sessions table...');
const sessions = await prisma.impersonationSession.findMany({
take: 5,
include: {
originalUser: {
select: { id: true, email: true, role: true }
},
impersonatedUser: {
select: { id: true, email: true, role: true }
}
}
});
console.log(` Found ${sessions.length} impersonation sessions`);
sessions.forEach(session => {
console.log(` - ${session.originalUser.email} (${session.originalUser.role}) โ ${session.impersonatedUser.email} (${session.impersonatedUser.role})`);
});
// 2. Check for superadmin users
console.log('\n2. Checking for superadmin users...');
const superadmins = await prisma.user.findMany({
where: { role: 'SUPERADMIN' },
select: { id: true, email: true, role: true, name: true }
});
console.log(` Found ${superadmins.length} superadmin users:`);
superadmins.forEach(user => {
console.log(` - ${user.email} (${user.name})`);
});
// 3. Check for regular users to impersonate
console.log('\n3. Checking for users to impersonate...');
const regularUsers = await prisma.user.findMany({
where: {
role: {
not: 'SUPERADMIN'
}
},
select: { id: true, email: true, role: true, name: true },
take: 5
});
console.log(` Found ${regularUsers.length} regular users:`);
regularUsers.forEach(user => {
console.log(` - ${user.email} (${user.name}) - ${user.role}`);
});
// 4. Test canAccessAdmin function logic
console.log('\n4. Testing canAccessAdmin logic...');
const testSessions = [
{ user: { role: 'SUPERADMIN' } },
{ user: { role: 'ADMIN' } },
{ user: { role: 'LAWYER' } },
{ user: { role: 'CLIENT' } },
null,
{ user: null }
];
testSessions.forEach((session, index) => {
const canAccess = session && session.user && (session.user.role === 'SUPERADMIN' || session.user.role === 'ADMIN');
console.log(` Session ${index + 1}: ${session?.user?.role || 'null'} โ ${canAccess ? 'โ
CAN ACCESS' : 'โ CANNOT ACCESS'}`);
});
console.log('\nโ
Impersonation test completed successfully!');
console.log('\n๐ Next steps:');
console.log(' 1. Try clicking the impersonate button in the admin dashboard');
console.log(' 2. Check browser console for any errors');
console.log(' 3. Verify the session updates correctly');
} catch (error) {
console.error('โ Error testing impersonation:', error);
} finally {
await prisma.$disconnect();
}
}
testImpersonation();