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

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/gositeme/domains/lavocat.quebec/private_html/scripts/assign-users-to-tracks.ts
import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();

async function assignUsersToTracks() {
  console.log('šŸŽÆ Assigning users to society tracks...');

  try {
    // Get all users
    const allUsers = await prisma.user.findMany({
      include: {
        degrees: {
          include: {
            degree: true
          }
        }
      }
    });

    console.log(`šŸ‘„ Found ${allUsers.length} users:`);
    
    // Get first degrees for each track
    const firstLawyerDegree = await prisma.societyDegree.findFirst({
      where: { degreeNumber: 1, track: 'LAWYER' }
    });
    
    const firstClientDegree = await prisma.societyDegree.findFirst({
      where: { degreeNumber: 1, track: 'CLIENT' }
    });

    for (const user of allUsers) {
      console.log(`\nšŸ‘¤ Processing ${user.email} (${user.role}):`);
      
      // Check if user already has degrees
      const existingDegrees = user.degrees;
      console.log(`  Current degrees: ${existingDegrees.length}`);
      
      // Assign based on role
      if (user.role === 'LAWYER' || user.role === 'ADMIN' || user.role === 'SUPERADMIN') {
        // Lawyers, admins get lawyer track
        const hasLawyerDegree = existingDegrees.some(ud => ud.degree.track === 'LAWYER');
        
        if (!hasLawyerDegree && firstLawyerDegree) {
          await prisma.userDegree.create({
            data: {
              userId: user.id,
              degreeId: firstLawyerDegree.id,
              achievedAt: new Date(),
              ceremonyCompleted: true,
              progressPercentage: 100
            }
          });
          console.log(`  āœ… Assigned to LAWYER track (Degree 1)`);
        } else {
          console.log(`  ā„¹ļø Already has LAWYER track degree`);
        }
        
        // Also assign client track for cross-track participation
        const hasClientDegree = existingDegrees.some(ud => ud.degree.track === 'CLIENT');
        
        if (!hasClientDegree && firstClientDegree) {
          await prisma.userDegree.create({
            data: {
              userId: user.id,
              degreeId: firstClientDegree.id,
              achievedAt: new Date(),
              ceremonyCompleted: true,
              progressPercentage: 100
            }
          });
          console.log(`  āœ… Also assigned to CLIENT track (Degree 1) for cross-participation`);
        }
        
      } else {
        // Regular users get client track
        const hasClientDegree = existingDegrees.some(ud => ud.degree.track === 'CLIENT');
        
        if (!hasClientDegree && firstClientDegree) {
          await prisma.userDegree.create({
            data: {
              userId: user.id,
              degreeId: firstClientDegree.id,
              achievedAt: new Date(),
              ceremonyCompleted: true,
              progressPercentage: 100
            }
          });
          console.log(`  āœ… Assigned to CLIENT track (Degree 1)`);
        } else {
          console.log(`  ā„¹ļø Already has CLIENT track degree`);
        }
      }
    }

    // Assign all users to appropriate lodges
    console.log('\nšŸ›ļø Assigning lodge memberships...');
    
    const civicLodge = await prisma.lodge.findFirst({
      where: { track: 'CLIENT', lodgeLevel: 'CIVIC' }
    });
    
    const blueLodge = await prisma.lodge.findFirst({
      where: { track: 'LAWYER', lodgeLevel: 'BLUE' }
    });

    for (const user of allUsers) {
      if (user.role === 'LAWYER' || user.role === 'ADMIN' || user.role === 'SUPERADMIN') {
        // Add to both Blue Lodge (lawyer) and Civic Lodge (client participation)
        if (blueLodge) {
          const existingMembership = await prisma.lodgeMembership.findFirst({
            where: { userId: user.id, lodgeId: blueLodge.id }
          });
          
          if (!existingMembership) {
            await prisma.lodgeMembership.create({
              data: {
                userId: user.id,
                lodgeId: blueLodge.id,
                joinedDate: new Date(),
                isActive: true
              }
            });
            console.log(`  šŸ‘Øā€āš–ļø Added ${user.email} to Blue Lodge`);
          }
        }
        
        if (civicLodge) {
          const existingMembership = await prisma.lodgeMembership.findFirst({
            where: { userId: user.id, lodgeId: civicLodge.id }
          });
          
          if (!existingMembership) {
            await prisma.lodgeMembership.create({
              data: {
                userId: user.id,
                lodgeId: civicLodge.id,
                joinedDate: new Date(),
                isActive: true
              }
            });
            console.log(`  šŸ‘„ Added ${user.email} to Civic Lodge`);
          }
        }
      } else {
        // Regular users get Civic Lodge
        if (civicLodge) {
          const existingMembership = await prisma.lodgeMembership.findFirst({
            where: { userId: user.id, lodgeId: civicLodge.id }
          });
          
          if (!existingMembership) {
            await prisma.lodgeMembership.create({
              data: {
                userId: user.id,
                lodgeId: civicLodge.id,
                joinedDate: new Date(),
                isActive: true
              }
            });
            console.log(`  šŸ‘„ Added ${user.email} to Civic Lodge`);
          }
        }
      }
    }

    console.log('\n✨ Track assignment completed!');

  } catch (error) {
    console.error('āŒ Error assigning tracks:', error);
    throw error;
  } finally {
    await prisma.$disconnect();
  }
}

assignUsersToTracks(); 

CasperSecurity Mini