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 /swark erfordert 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.