Files
balikci/scripts/change-password.js
salvacybersec f86cda2978 Domain support
2025-11-10 20:01:41 +03:00

118 lines
3.4 KiB
JavaScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env node
/**
* Admin Password Change Script
* Usage: node scripts/change-password.js
*/
const bcrypt = require('bcrypt');
const readline = require('readline');
const path = require('path');
// Set correct path for database config
process.chdir(path.join(__dirname, '../backend'));
const { sequelize } = require('../backend/src/config/database');
const AdminUser = require('../backend/src/models/AdminUser');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
const question = (query) => new Promise((resolve) => rl.question(query, resolve));
const validatePassword = (password) => {
if (password.length < 8) {
return 'Şifre en az 8 karakter olmalıdır!';
}
if (!/[a-zA-Z]/.test(password)) {
return 'Şifre en az bir harf içermelidir!';
}
if (!/[0-9]/.test(password)) {
return 'Şifre en az bir rakam içermelidir!';
}
return null;
};
(async () => {
try {
console.log('\n╔═══════════════════════════════════════════════════════════════╗');
console.log('║ Oltalama Panel - Admin Şifre Değiştir ║');
console.log('╚═══════════════════════════════════════════════════════════════╝\n');
// Connect to database
await sequelize.authenticate();
console.log('✓ Database bağlantısı başarılı\n');
// Get username
const username = await question('Admin kullanıcı adı: ');
// Check if user exists
const user = await AdminUser.findOne({ where: { username } });
if (!user) {
console.log('✗ Kullanıcı bulunamadı!');
rl.close();
process.exit(1);
}
// Get new password
let password;
while (true) {
// Disable echo for password input
const originalWrite = rl._writeToOutput;
rl._writeToOutput = function (stringToWrite) {
if (stringToWrite.charCodeAt(0) === 13) {
rl.output.write('\n');
} else {
rl.output.write('*');
}
};
password = await question('Yeni şifre (en az 8 karakter, harf ve rakam): ');
console.log(); // New line after hidden input
const validationError = validatePassword(password);
if (validationError) {
console.log(`${validationError}\n`);
continue;
}
const passwordConfirm = await question('Şifreyi tekrar girin: ');
console.log(); // New line after hidden input
// Restore echo
rl._writeToOutput = originalWrite;
if (password !== passwordConfirm) {
console.log('✗ Şifreler eşleşmiyor!\n');
continue;
}
break;
}
// Update password
console.log('\n⏳ Şifre güncelleniyor...');
const hashedPassword = await bcrypt.hash(password, 10);
await user.update({
password_hash: hashedPassword,
});
console.log('\n✓ Şifre başarıyla değiştirildi!');
console.log(`\nKullanıcı: ${username}`);
console.log('Yeni şifre: ********** (güvenli bir şekilde saklandı)');
console.log('\n✓ Artık yeni şifrenizle giriş yapabilirsiniz.\n');
rl.close();
process.exit(0);
} catch (error) {
console.error('\n✗ Hata:', error.message);
rl.close();
process.exit(1);
}
})();