import { PrismaClient } from '@prisma/client'; import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3'; import Database from 'better-sqlite3'; import crypto from 'crypto'; import path from 'path'; // Create database connection const dbPath = path.resolve(process.cwd(), 'prisma', 'dev.db'); const database = new Database(dbPath); const adapter = new PrismaBetterSqlite3(database); const prisma = new PrismaClient({ adapter }); // Simple encryption for the access token (matching the app's encryption) const ALGORITHM = 'aes-256-gcm'; const IV_LENGTH = 16; function encrypt(text: string, key: string): string { const iv = crypto.randomBytes(IV_LENGTH); const cipher = crypto.createCipheriv( ALGORITHM, Buffer.from(key, 'hex'), iv ); let encrypted = cipher.update(text, 'utf8', 'hex'); encrypted += cipher.final('hex'); const authTag = cipher.getAuthTag(); return iv.toString('hex') + authTag.toString('hex') + encrypted; } async function main() { // Use the ENCRYPTION_KEY from .env or a proper 32-byte (64 hex char) dev key const encryptionKey = process.env.ENCRYPTION_KEY || '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'; // GHL Credentials const GHL_LOCATION_ID = 'n2RYjuDNBOnOrUDAaSEU'; const GHL_ACCESS_TOKEN = 'd31f6728-ee7a-4625-918e-ac569fdf4a07'; // Create or update test user const hashedPassword = crypto.createHash('sha256').update('testpass123').digest('hex'); const user = await prisma.user.upsert({ where: { email: 'test@cresync.com' }, update: { ghlLocationId: GHL_LOCATION_ID, ghlAccessToken: encrypt(GHL_ACCESS_TOKEN, encryptionKey), role: 'SUPER_ADMIN', }, create: { email: 'test@cresync.com', passwordHash: hashedPassword, firstName: 'Test', lastName: 'User', role: 'SUPER_ADMIN', ghlLocationId: GHL_LOCATION_ID, ghlAccessToken: encrypt(GHL_ACCESS_TOKEN, encryptionKey), }, }); console.log('✅ Test user created/updated:'); console.log(` Email: test@cresync.com`); console.log(` Password: testpass123`); console.log(` GHL Location ID: ${GHL_LOCATION_ID}`); console.log(` Role: SUPER_ADMIN`); console.log(''); console.log('🚀 You can now start the dev server and log in!'); } main() .catch((e) => { console.error('Error:', e); process.exit(1); }) .finally(async () => { await prisma.$disconnect(); });