95 lines
2.7 KiB
JavaScript
Executable File
95 lines
2.7 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
/**
|
|
* Change Admin Password Script
|
|
* Usage: node scripts/change-password.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 changePassword() {
|
|
try {
|
|
console.log('\n╔═══════════════════════════════════════════════════════════╗');
|
|
console.log('║ 🔐 Change Admin Password - Oltalama Panel ║');
|
|
console.log('╚═══════════════════════════════════════════════════════════╝\n');
|
|
|
|
// Test database connection
|
|
await sequelize.authenticate();
|
|
console.log('✅ Database connection successful\n');
|
|
|
|
// Get username
|
|
const username = await question('👤 Enter admin username: ');
|
|
if (!username) {
|
|
console.log('❌ Username is required');
|
|
process.exit(1);
|
|
}
|
|
|
|
// Check if user exists
|
|
const user = await AdminUser.findOne({ where: { username } });
|
|
if (!user) {
|
|
console.log('❌ User not found');
|
|
process.exit(1);
|
|
}
|
|
|
|
// Get new password
|
|
let newPassword;
|
|
while (true) {
|
|
newPassword = await question('🔑 Enter new password (min 8 characters): ');
|
|
if (!newPassword || newPassword.length < 8) {
|
|
console.log('❌ Password must be at least 8 characters\n');
|
|
continue;
|
|
}
|
|
|
|
const confirmPassword = await question('🔑 Confirm new password: ');
|
|
if (newPassword !== confirmPassword) {
|
|
console.log('❌ Passwords do not match\n');
|
|
continue;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
// Hash password
|
|
console.log('\n⏳ Updating password...');
|
|
const hashedPassword = await bcrypt.hash(newPassword, 10);
|
|
|
|
// Update password
|
|
await user.update({
|
|
password: hashedPassword,
|
|
});
|
|
|
|
console.log('\n✅ Password updated successfully!');
|
|
console.log(`👤 Username: ${username}\n`);
|
|
|
|
} catch (error) {
|
|
console.error('\n❌ Error changing password:', error.message);
|
|
process.exit(1);
|
|
} finally {
|
|
rl.close();
|
|
await sequelize.close();
|
|
process.exit(0);
|
|
}
|
|
}
|
|
|
|
// Run
|
|
changePassword();
|
|
|