45 lines
1.3 KiB
PHP
45 lines
1.3 KiB
PHP
<?php
|
|
/**
|
|
* Passwort eines Benutzers zurücksetzen.
|
|
* Aufruf: php scripts/container/reset-password.php <username> <neues_passwort>
|
|
*/
|
|
|
|
if ($argc !== 3) {
|
|
echo 'Verwendung: php scripts/container/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;
|