Feature: Passwort-Reset-Skript und Doku
This commit is contained in:
parent
315cafb131
commit
810c49613a
3 changed files with 59 additions and 1 deletions
|
|
@ -93,3 +93,16 @@ Damit `docker compose exec` ohne `sudo` funktioniert, muss der User in der Docke
|
|||
sudo usermod -aG docker $USER
|
||||
# Danach neu einloggen
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Benutzer-Passwort zurücksetzen
|
||||
|
||||
Das Skript `scripts/reset-password.php` setzt das Passwort eines vorhandenen Benutzers auf einen neuen Wert. Es nimmt den Benutzernamen und das neue Passwort als Parameter entgegen, erzeugt einen bcrypt-Hash und aktualisiert den Eintrag in der Datenbank. Wird der Benutzer nicht gefunden, gibt es eine Fehlermeldung und ändert nichts.
|
||||
|
||||
```bash
|
||||
docker compose exec web php scripts/reset-password.php <username> <neues_passwort>
|
||||
|
||||
# Beispiel:
|
||||
docker compose exec web php scripts/reset-password.php Meinuser geheim123
|
||||
```
|
||||
|
|
|
|||
45
scripts/reset-password.php
Normal file
45
scripts/reset-password.php
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
<?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;
|
||||
|
|
@ -1 +1 @@
|
|||
1-260517
|
||||
1-260521
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue