Files
crm-server/src/db/seeds/admin.seed.js
2025-11-18 13:53:28 +01:00

68 lines
2.4 KiB
JavaScript

import { db } from '../../config/database.js';
import { users } from '../schema.js';
import { eq } from 'drizzle-orm';
import { hashPassword, generateTempPassword } from '../../utils/password.js';
import { logger } from '../../utils/logger.js';
import dotenv from 'dotenv';
dotenv.config();
/**
* Seed script pre vytvorenie admin účtu
*/
async function seedAdmin() {
try {
logger.info('Starting admin user seed...');
// Skontroluj či admin už existuje
const [existingAdmin] = await db
.select()
.from(users)
.where(eq(users.username, 'admin'))
.limit(1);
if (existingAdmin) {
logger.warn('Admin user already exists. Skipping seed.');
process.exit(0);
}
// Vygeneruj temporary password
const tempPassword = generateTempPassword(16);
// Hash temporary password
const hashedTempPassword = await hashPassword(tempPassword);
// Vytvor admin usera
const [newAdmin] = await db
.insert(users)
.values({
username: 'admin',
tempPassword: hashedTempPassword,
role: 'admin',
changedPassword: false,
firstName: 'System',
lastName: 'Administrator',
})
.returning();
logger.success('Admin user created successfully!');
logger.info('═══════════════════════════════════════════════════════');
logger.info(' ADMIN CREDENTIALS');
logger.info('═══════════════════════════════════════════════════════');
logger.info(` Username: admin`);
logger.info(` Temporary Password: ${tempPassword}`);
logger.info(` User ID: ${newAdmin.id}`);
logger.info('═══════════════════════════════════════════════════════');
logger.warn(' ⚠️ IMPORTANT: Save this password securely!');
logger.warn(' ⚠️ You will need to change it after first login.');
logger.info('═══════════════════════════════════════════════════════');
process.exit(0);
} catch (error) {
logger.error('Failed to seed admin user', error);
process.exit(1);
}
}
seedAdmin();