Benutzer, Sprache und Konfiguration
Anmeldung und Benutzerverwaltung, Spracheinstellung und alle relevanten Umgebungsvariablen von swark und dem Docker-Betrieb.
Anmeldung
- Die Anmeldung erfolgt pro Panel unter
/admin/<panel>/login, zum Beispiel/admin/it/login. Die Sitzung gilt danach für alle Panels. - Angemeldet wird mit E-Mail-Adresse und Passwort. Option «Angemeldet bleiben» ist vorhanden.
- Das Frontend unter
/swarkerfordert keine Anmeldung (siehe Kapitel Frontend). - Sitzungen liegen in der Datenbank (
SESSION_DRIVER=database), Standard-Lebensdauer 120 Minuten.
Benutzerverwaltung
swark 0.2.1 kennt nur lokale Benutzer in der Tabelle users (Name, E-Mail, Passwort-Hash). Es gibt:
- keine Anbindung an OIDC, SAML, LDAP, Active Directory oder Microsoft Entra ID,
- keine Rollen oder Berechtigungen: jeder Benutzer darf in allen Panels alles lesen und ändern,
- keine Selbstregistrierung, keine «Passwort vergessen»-Funktion, keine Profilseite zum Ändern des eigenen Passworts, keine Zwei-Faktor-Anmeldung,
- keine Benutzerverwaltung in der Oberfläche.
Benutzer werden auf der Kommandozeile im Container angelegt:
php artisan swark:create-user --name="Erika Muster" --email=erika.muster@example.ch --password='…'
Ohne --password erzeugt der Befehl ein Zufallspasswort und gibt es aus. Mit --skip-on-existing-user passiert nichts, wenn die E-Mail-Adresse schon existiert. Die Option --is-admin hat in 0.2.1 keine Wirkung.
Passwort eines bestehenden Benutzers ändern oder Benutzer löschen geht nur über Laravel Tinker oder SQL, zum Beispiel:
php artisan tinker --execute="App\Models\User::where('email','erika.muster@example.ch')->first()->update(['password' => '…']);"
php artisan tinker --execute="App\Models\User::where('email','erika.muster@example.ch')->delete();"
Das Passwort wird beim Speichern automatisch gehasht.
Im Hosting von Nerd-IT werden der Admin- und der Demo-Benutzer zusätzlich bei jedem Containerstart aus .env.production angelegt bzw. ihr Passwort zurückgesetzt (Skript sync-users.php, siehe Betriebshandbuch).
Voraussetzung für die Anmeldung im Produktivbetrieb
Mit APP_ENV=production lässt Filament nur Benutzer zu, deren Modell das Interface FilamentUser implementiert. Das Original-Modell App\Models\User von swark 0.2.1 tut das nicht; jede Anmeldung endet dann mit «403 Forbidden». Das Nerd-IT-Hosting ersetzt deshalb app/Models/User.php durch eine Fassung mit canAccessPanel(), die allen Benutzern Zugriff gibt.
Sprache
| Variable | Wirkung | Standard |
|---|---|---|
APP_LOCALE |
Sprache der Oberfläche; swark liefert Texte für de und en |
de |
APP_FALLBACK_LOCALE |
Ersatzsprache für fehlende Texte | en |
Die Frontend-Seiten (Navigation, Überschriften, Hinweise) sind vollständig deutsch. Die Masken der Admin-Panels (Feldbezeichnungen, Abschnitte) sind im Code überwiegend englisch beschriftet; Filament-eigene Texte (Schaltflächen, Meldungen) erscheinen in der eingestellten Sprache. Inhalte (Namen, Beschreibungen, Content-Dateien) werden in der Sprache gespeichert, in der sie erfasst wurden; eine Mehrsprachigkeit der Inhalte gibt es nicht.
Umgebungsvariablen
swark und Laravel
| Variable | Bedeutung | Standard / Hinweis |
|---|---|---|
APP_NAME |
Name im Seitentitel und in der Navigationsleiste | swark |
APP_ENV |
production oder local |
.env.example: local; Hosting: production |
APP_KEY |
Schlüssel für Verschlüsselung und Sitzungen (base64:…) |
muss gesetzt sein; Hosting erzeugt ihn einmalig |
APP_DEBUG |
Fehlerdetails im Browser | false; in Produktion nie true |
APP_URL |
Öffentliche Basis-URL | muss zur Domain passen |
APP_TIMEZONE |
Zeitzone für Datum und Uhrzeit | UTC; für die Schweiz ist Europe/Zurich möglich |
APP_LOCALE, APP_FALLBACK_LOCALE |
Sprache | de, en |
SWARK_CONTENT_PATH |
Content-Pfad relativ zu /var/www/html |
storage/app/swark/_default; Hosting ./swark_content |
DB_CONNECTION |
Datenbanktreiber | mysql; 0.2.1 unterstützt nur MySQL/MariaDB |
DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD |
Datenbankzugang | MariaDB 10.11 oder neuer |
SESSION_DRIVER, SESSION_LIFETIME |
Sitzungsspeicher und Dauer in Minuten | database, 120 |
SESSION_SECURE_COOKIE |
Cookie nur über HTTPS | nicht gesetzt; hinter HTTPS empfohlen true |
CACHE_STORE |
Cache | database |
QUEUE_CONNECTION |
Warteschlange | database; swark nutzt in 0.2.1 keine Jobs |
LOG_CHANNEL, LOG_LEVEL |
Protokollierung | .env.example: stack, debug; Hosting: stderr |
MAIL_MAILER und MAIL_* |
E-Mail-Versand | log; swark versendet in 0.2.1 keine E-Mails |
BCRYPT_ROUNDS |
Aufwand für Passwort-Hashes | 12 |
Hinweis zur Protokollierung: swark schreibt jede SQL-Abfrage mit Stufe info ins Log. Mit LOG_LEVEL=debug (Standard aus .env.example) ist das Log entsprechend umfangreich. LOG_LEVEL=warning blendet diese Einträge aus.
Docker-Image (offizielles swark-Image und Nerd-IT-Image)
| Variable | Bedeutung |
|---|---|
AUTORUN_ENABLED |
true: beim Start Laravel-Automatiken des Basis-Images serversideup/php ausführen (u. a. Datenbankmigrationen und storage:link) |
PHP_OPCACHE_ENABLE |
1: PHP-Opcache einschalten |
ADMIN_EMAIL, ADMIN_PASSWORD |
Offizielles Image: legt beim Start einen Benutzer an (Passwort wird erzeugt, wenn leer). Nerd-IT-Image: Admin-Benutzer anlegen bzw. Passwort bei jedem Start setzen (nur wenn beide gesetzt) |
ADMIN_NAME |
Nerd-IT-Image: Anzeigename des Admins (Standard Admin) |
DEMO_EMAIL, DEMO_PASSWORD, DEMO_NAME |
Nerd-IT-Image: Demo-Benutzer (nur wenn E-Mail und Passwort gesetzt) |
Weitere Variablen des Basis-Images (zum Beispiel PHP-Limits) sind in der Dokumentation von serversideup/php beschrieben.
Konfigurationsdatei config/swark.php
| Schlüssel | Bedeutung |
|---|---|
content.path |
Content-Pfad (aus SWARK_CONTENT_PATH) |
routing.name, routing.prefix |
vorbereitet, in 0.2.1 ohne Wirkung (Präfix /swark ist fest) |
events.hookable |
Zuordnung der Kapitel-Ereignisse zu den Hook-Dateisuffixen (before-chapter, before, after) |
Nach Änderungen an Umgebungsvariablen muss der Container neu erzeugt werden; zwischengespeicherte Konfiguration wird mit php artisan optimize:clear und anschliessend php artisan optimize erneuert.