Add password generator, Caprover deployment, and position as modern legacy tool replacement

Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-01-08 01:37:58 +00:00
parent e4ec2b7d18
commit 684d8cd73c
6 changed files with 334 additions and 15 deletions

View File

@@ -2,6 +2,7 @@ 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({
@@ -11,7 +12,15 @@ async function seedAdminUser() {
const db = drizzle(pool);
const username = process.env.ADMIN_USERNAME || 'admin';
const password = process.env.ADMIN_PASSWORD || 'admin123';
// 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);
@@ -21,14 +30,20 @@ async function seedAdminUser() {
passwordHash,
});
console.log(`Admin user created successfully!`);
console.log(`Username: ${username}`);
console.log(`Password: ${password}`);
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');
console.log(' Admin user already exists');
} else {
console.error('Error creating admin user:', error);
console.error('Error creating admin user:', error);
}
} finally {
await pool.end();