admin user

This commit is contained in:
salvacybersec
2025-11-11 05:02:08 +03:00
parent 686556c7dd
commit b2cb3cb1bb
3 changed files with 202 additions and 3 deletions

102
backend/scripts/create-admin.js Executable file
View File

@@ -0,0 +1,102 @@
#!/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();