mirror of
https://github.com/johndoe6345789/postgres.git
synced 2026-04-24 13:55:00 +00:00
54 lines
1.7 KiB
TypeScript
54 lines
1.7 KiB
TypeScript
import * as bcrypt from 'bcryptjs';
|
||
import { drizzle } from 'drizzle-orm/node-postgres';
|
||
import { Pool } from 'pg';
|
||
import { adminUserSchema } from '../src/models/Schema';
|
||
import { generateSecurePassword } from './generate-password';
|
||
|
||
async function seedAdminUser() {
|
||
const pool = new Pool({
|
||
connectionString: process.env.DATABASE_URL,
|
||
});
|
||
|
||
const db = drizzle(pool);
|
||
|
||
const username = process.env.ADMIN_USERNAME || 'admin';
|
||
|
||
// Generate secure password if not provided
|
||
let password = process.env.ADMIN_PASSWORD;
|
||
let passwordGenerated = false;
|
||
|
||
if (!password) {
|
||
password = generateSecurePassword(32);
|
||
passwordGenerated = true;
|
||
}
|
||
|
||
const passwordHash = await bcrypt.hash(password, 10);
|
||
|
||
try {
|
||
await db.insert(adminUserSchema).values({
|
||
username,
|
||
passwordHash,
|
||
});
|
||
|
||
console.log('✅ Admin user created successfully!');
|
||
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
||
console.log(`📧 Username: ${username}`);
|
||
console.log(`🔑 Password: ${password}`);
|
||
if (passwordGenerated) {
|
||
console.log('⚠️ This password was auto-generated. Save it securely!');
|
||
}
|
||
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
||
console.log('🌐 Login at: http://localhost:3000/admin/login');
|
||
} catch (error: any) {
|
||
if (error.code === '23505') {
|
||
console.log('ℹ️ Admin user already exists');
|
||
} else {
|
||
console.error('❌ Error creating admin user:', error);
|
||
}
|
||
} finally {
|
||
await pool.end();
|
||
}
|
||
}
|
||
|
||
seedAdminUser();
|