Steuerkram/scripts/reset-password.php
2026-05-21 14:57:27 +02:00

45 lines
1.3 KiB
PHP

<?php
/**
* Passwort eines Benutzers zurücksetzen.
* Aufruf: php scripts/reset-password.php <username> <neues_passwort>
*/
if ($argc !== 3) {
echo 'Verwendung: php scripts/reset-password.php <username> <neues_passwort>' . PHP_EOL;
exit(1);
}
$username = $argv[1];
$newPassword = $argv[2];
$host = getenv('DB_HOST') ?: 'db';
$dbName = getenv('DB_NAME') ?: 'steuerkram';
$dbUser = getenv('DB_USER') ?: 'steuerkram';
$dbPass = getenv('DB_PASS') ?: 'steuerkram';
try {
$pdo = new PDO(
"mysql:host=$host;dbname=$dbName;charset=utf8mb4",
$dbUser,
$dbPass,
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);
} catch (PDOException $e) {
echo 'FEHLER: DB-Verbindung fehlgeschlagen: ' . $e->getMessage() . PHP_EOL;
exit(1);
}
$stmt = $pdo->prepare('SELECT COUNT(*) FROM users WHERE username = ?');
$stmt->execute([$username]);
if ((int) $stmt->fetchColumn() === 0) {
echo 'FEHLER: Benutzer "' . $username . '" wurde nicht gefunden.' . PHP_EOL;
exit(1);
}
$hash = password_hash($newPassword, PASSWORD_BCRYPT);
$stmt = $pdo->prepare('UPDATE users SET password_hash = ? WHERE username = ?');
$stmt->execute([$hash, $username]);
echo 'Passwort für Benutzer "' . $username . '" wurde erfolgreich geändert.' . PHP_EOL;