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/backups/lavocat.quebec/backup-20250730-021618/scripts/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/gositeme/backups/lavocat.quebec/backup-20250730-021618/scripts/migrate-data.ts
import { PrismaClient } from '@prisma/client';
import fs from 'fs';
import path from 'path';
import { hash } from 'bcryptjs';

const prisma = new PrismaClient();

function isValidDate(date: any): boolean {
  return date instanceof Date && !isNaN(date.getTime());
}

async function migrateData() {
  try {
    // Read existing data
    const usersFile = path.join(process.cwd(), 'users.json');
    const registrationsFile = path.join(process.cwd(), 'registrations.json');

    // Migrate users
    if (fs.existsSync(usersFile)) {
      const users = JSON.parse(fs.readFileSync(usersFile, 'utf8'));
      
      for (const user of users) {
        // Hash password if not already hashed
        const hashedPassword = user.password.startsWith('$2') 
          ? user.password 
          : await hash(user.password, 10);

        await prisma.user.create({
          data: {
            id: user.id,
            email: user.email,
            name: user.name,
            password: hashedPassword,
            role: user.role || 'user',
          }
        });
      }
      console.log('Users migrated successfully');
    }

    // Migrate registrations
    if (fs.existsSync(registrationsFile)) {
      const registrations = JSON.parse(fs.readFileSync(registrationsFile, 'utf8'));
      
      for (const registration of registrations) {
        // Create file uploads first
        const fileUploads = [];
        if (registration.uploadedFiles) {
          for (const file of registration.uploadedFiles) {
            const fileUpload = await prisma.fileUpload.create({
              data: {
                originalName: file.originalName,
                storedName: file.newName,
                mimeType: file.mimeType || 'application/octet-stream',
                size: file.size || 0,
                path: file.path,
              }
            });
            fileUploads.push(fileUpload);
          }
        }

        // Create registration
        await prisma.registration.create({
          data: {
            id: registration.id,
            userId: registration.userId,
            firstName: registration.firstName,
            lastName: registration.lastName,
            email: registration.email,
            phone: registration.phone,
            birthDate: isValidDate(registration.birthDate) ? new Date(registration.birthDate) : new Date('2000-01-01'),
            relationship: registration.relationship,
            message: registration.message,
            address: registration.address,
            detaineeInfo: registration.detaineeInfo,
            preferredLanguage: registration.preferredLanguage,
            preferredContactMethod: registration.preferredContactMethod,
            documents: registration.documents,
            status: registration.status || 'pending',
            createdAt: registration.date ? new Date(registration.date) : new Date(),
          }
        });

        // Update file uploads with registration ID
        if (fileUploads.length > 0) {
          await Promise.all(fileUploads.map(file => 
            prisma.fileUpload.update({
              where: { id: file.id },
              data: { registrationId: registration.id }
            })
          ));
        }
      }
      console.log('Registrations migrated successfully');
    }

    console.log('Migration completed successfully');
  } catch (error) {
    console.error('Migration failed:', error);
    process.exit(1);
  } finally {
    await prisma.$disconnect();
  }
}

migrateData(); 

CasperSecurity Mini