#!/usr/bin/env node /** * Create Admin User Script * Usage: node scripts/create-admin.js */ const readline = require('readline'); const bcrypt = require('bcrypt'); const path = require('path'); // Load environment require('dotenv').config({ path: path.join(__dirname, '../.env') }); // Load database and models const { sequelize } = require('../src/config/database'); const { AdminUser } = require('../src/models'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); function question(query) { return new Promise(resolve => rl.question(query, resolve)); } async function createAdmin() { try { console.log('\n╔═══════════════════════════════════════════════════════════╗'); console.log('║ 🔐 Create Admin User - Oltalama Panel ║'); console.log('╚═══════════════════════════════════════════════════════════╝\n'); // Test database connection await sequelize.authenticate(); console.log('✅ Database connection successful\n'); // Get username let username; while (true) { username = await question('👤 Enter admin username: '); if (!username || username.length < 3) { console.log('❌ Username must be at least 3 characters\n'); continue; } // Check if username exists const existingUser = await AdminUser.findOne({ where: { username } }); if (existingUser) { console.log('❌ Username already exists\n'); continue; } break; } // Get password let password; while (true) { password = await question('🔑 Enter admin password (min 8 characters): '); if (!password || password.length < 8) { console.log('❌ Password must be at least 8 characters\n'); continue; } const confirmPassword = await question('🔑 Confirm password: '); if (password !== confirmPassword) { console.log('❌ Passwords do not match\n'); continue; } break; } // Hash password console.log('\n⏳ Creating admin user...'); const hashedPassword = await bcrypt.hash(password, 10); // Create admin user await AdminUser.create({ username, password: hashedPassword, is_admin: true, }); console.log('\n✅ Admin user created successfully!'); console.log(`👤 Username: ${username}`); console.log('\n🎉 You can now login to the admin panel!\n'); } catch (error) { console.error('\n❌ Error creating admin user:', error.message); process.exit(1); } finally { rl.close(); await sequelize.close(); process.exit(0); } } // Run createAdmin();