Files
stechuhr3/backend/set-password.js

72 lines
1.8 KiB
JavaScript

/**
* Script zum Setzen eines neuen Passworts für einen User
* Verwendung: node set-password.js <user_id> <neues_passwort>
*/
require('dotenv').config();
const bcrypt = require('bcrypt');
const database = require('./src/config/database');
async function setPassword(userId, newPassword) {
try {
// Datenbank initialisieren
await database.initialize();
const { User, AuthInfo } = database.getModels();
// Hole User
const user = await User.findByPk(userId, {
include: [
{
model: AuthInfo,
as: 'authInfo',
required: true
}
]
});
if (!user || !user.authInfo) {
console.error(`❌ User ${userId} oder AuthInfo nicht gefunden`);
process.exit(1);
}
// Hash Passwort
console.log('🔐 Hashe Passwort...');
const hashedPassword = await bcrypt.hash(newPassword, 10);
// Aktualisiere Passwort
user.authInfo.password_hash = hashedPassword;
await user.authInfo.save();
console.log(`✅ Passwort für User ${userId} (${user.full_name}) erfolgreich gesetzt!`);
console.log(` Email: ${user.authInfo.email}`);
// Schließe Datenbankverbindung
await database.close();
process.exit(0);
} catch (error) {
console.error('❌ Fehler beim Setzen des Passworts:', error.message);
await database.close();
process.exit(1);
}
}
// Argumente prüfen
const userId = parseInt(process.argv[2]);
const newPassword = process.argv[3];
if (!userId || !newPassword) {
console.log('Verwendung: node set-password.js <user_id> <neues_passwort>');
console.log('Beispiel: node set-password.js 1 MeinNeuesPasswort123');
process.exit(1);
}
if (newPassword.length < 6) {
console.error('❌ Passwort muss mindestens 6 Zeichen lang sein');
process.exit(1);
}
// Passwort setzen
setPassword(userId, newPassword);