/** * Script zum Setzen eines neuen Passworts für einen User * Verwendung: node set-password.js */ 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 '); 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);