Appearance
User Kommandos
Die User-Konsolen-Kommandos ermöglichen die Verwaltung von Benutzerkonten direkt über die Kommandozeile. Alle Kommandos befinden sich im Controller src/commands/UserController.php.
Benutzer auflisten
Listet alle aktiven Benutzernamen alphabetisch sortiert auf. Dies ist die Standard-Aktion des Controllers.
bash
php yii user
# oder explizit:
php yii user/listEs werden nur aktive Benutzer angezeigt (nicht soft-deleted).
Passwort zurücksetzen
Setzt das Passwort eines Benutzers interaktiv zurück. Das Passwort wird zweimal abgefragt und muss übereinstimmen.
bash
php yii user/resetpassword <username>Beispiel
bash
$ php yii user/resetpassword admin
New password:
Confirm password:
Password for user 'admin' has been updated.Hinweise
- Das Passwort wird interaktiv eingegeben und erscheint nicht in der Shell-History
- Das Passwort wird mit
Yii::$app->getSecurity()->generatePasswordHash()gehasht (bcrypt) - Der Benutzer wird über den
usernameidentifiziert — bei unbekanntem Benutzernamen kann zuerstphp yii userausgeführt werden
Administrator-Konto initialisieren
Stellt sicher, dass genau ein administratives Konto existiert und ein brauchbares Passwort besitzt. Das Kommando wird vom Container-Entrypoint bei jedem Start direkt nach den Migrationen ausgeführt und ist daher idempotent.
bash
php yii user/seed-adminWoher das Passwort kommt
| Quelle | Verhalten |
|---|---|
ADMIN_PASSWORD (Env-Variable) | Wird gesetzt, sofern es nicht ohnehin schon hinterlegt ist |
ADMIN_PASSWORD_FILE (Docker-Secret aus dem Deployment) | wie oben; ein abschließender Zeilenumbruch der Secret-Datei wird ignoriert |
| nicht gesetzt | Es wird ein Zufallspasswort erzeugt und genau einmal ins Log geschrieben |
Der Kontoname ist über ADMIN_USERNAME konfigurierbar (Default: admin).
Entscheidungslogik
| Zustand des Kontos | Deployment-Passwort gesetzt | Ergebnis |
|---|---|---|
| existiert nicht | ja | wird angelegt (created) |
| existiert nicht | nein | wird angelegt, Passwort generiert + geloggt |
| kein/ungültiger Passwort-Hash | nein | Passwort generiert + geloggt (password-set) |
trägt noch das historische Standardpasswort admin | nein | wird rotiert + geloggt (insecure-default-replaced) |
| beliebiges anderes Passwort | nein | bleibt unangetastet (unchanged) |
| beliebiges Passwort, weicht ab | ja | wird auf das Deployment-Passwort gesetzt |
| Passwort entspricht bereits dem Deployment-Passwort | ja | keine Änderung, kein Log-Eintrag |
Fehlt die Rollenzuweisung admin, wird sie in allen Fällen nachgezogen.
Das generierte Passwort finden
Das Zufallspasswort steht nur in diesem einen Log-Eintrag — es wird nirgends im Klartext gespeichert:
- auf
stdoutdes Containers (docker logs, bzw. der Puppet-Run beim ersten Start) - im Log-Target (Loki), Kategorie
admin-seed, Levelwarning
In Grafana z.B. mit
logql
{service_name="iscan-web-<instanz>"} |= "Administrator account"Ist es verloren, hilft nur php yii user/resetpassword admin.
Hinweise
- Migrationen legen das Konto ohne Passwort-Hash an — ein Login ist damit unmöglich, bis
user/seed-admingelaufen ist - Bestandsinstanzen mit dem alten
admin/adminwerden beim ersten Start nach dem Update automatisch auf ein Zufallspasswort umgestellt - Wer ein festes Passwort will, hinterlegt es im Deployment; ein manuell im UI geändertes Passwort wird davon allerdings bei jedem Start wieder überschrieben