import { PrismaClient } from '@prisma/client'; import * as bcrypt from 'bcrypt'; const prisma = new PrismaClient(); async function main() { const mobile = (process.env.SEED_ADMIN_MOBILE || '09128081392').replace(/\D/g, ''); const normalized = mobile.startsWith('98') && mobile.length >= 12 ? `0${mobile.slice(2)}` : mobile.startsWith('9') && mobile.length === 10 ? `0${mobile}` : mobile; const password = process.env.SEED_ADMIN_PASSWORD || 'Admin@12345'; const firstName = process.env.SEED_ADMIN_FIRST_NAME || 'مدیر'; const lastName = process.env.SEED_ADMIN_LAST_NAME || 'اصلی'; const email = (process.env.SEED_ADMIN_EMAIL || 'admin@abshode.local').toLowerCase(); const passwordHash = await bcrypt.hash(password, 10); const user = await prisma.user.upsert({ where: { mobile: normalized }, update: { passwordHash, firstName, lastName, email, isActive: true, role: 'super_admin', }, create: { mobile: normalized, firstName, lastName, email, passwordHash, role: 'super_admin', isActive: true, }, }); console.log('Seeded admin:', { id: user.id, mobile: user.mobile, name: `${user.firstName} ${user.lastName}`, }); console.log('Login with:', normalized, '/', password); } main() .catch((e) => { console.error(e); process.exit(1); }) .finally(async () => { await prisma.$disconnect(); });