T.ME/BIBIL_0DAY
CasperSecurity


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/private_html/scripts/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/gositeme/domains/lavocat.ca/private_html/scripts/test-impersonation.js
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(); 

CasperSecurity Mini