Files
Laufzettel/.env.example
T
florian.wildeandClaude Opus 5 40e95dbe5f
Prüfung / pruefung (push) Canceled after 0s
Prüfung / e2e (push) Canceled after 0s
feat(auth): Anmeldung, Rollen und Benutzerverwaltung (#21)
OIDC mit Discovery, PKCE, state und nonce; lokaler Login mit argon2 als
Notfallzugang; Rechte in einer Tabelle, Prüfung ausschließlich serverseitig,
Rolle und Aktiv-Status pro Anfrage aus der Datenbank.

Ein unabhängiger Review fand eine offene Weiterleitung: die Präfix-Prüfung des
Rücksprungziels ließ /<TAB>/fremd.example durch, woraus der Browser
//fremd.example macht. Das Ziel wird jetzt aufgelöst und die Herkunft
verglichen. Dazu acht weitere Befunde, alle behoben.

274 Tests.

Closes #7

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-25 01:35:02 +00:00

78 lines
2.8 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Laufzettel – Umgebungsvariablen.
# Kopieren nach .env und ausfuellen. Die .env gehoert nie ins Repo.
# ---------- Pflicht ----------
# Oeffentliche Adresse der Anwendung. Steckt in den QR-Codes und in der
# OIDC-Rueckruf-Adresse, muss also stimmen, wenn ein Reverse Proxy davor haengt.
APP_URL=https://laufzettel.example.de
# Geheimnis fuer Sitzungs-Cookies und die Verschluesselung des LDAP-Bind-Passworts.
# Mindestens 32 Zeichen. Erzeugen mit: openssl rand -base64 48
APP_SECRET=
# Zugang zur Datenbank. Im Compose-Stand wird der Dienstname postgres verwendet
# und die Datenbank ist von aussen nicht erreichbar.
POSTGRES_USER=laufzettel
POSTGRES_PASSWORD=
POSTGRES_DB=laufzettel
DATABASE_URL=postgresql://laufzettel:@postgres:5432/laufzettel?schema=public
# ---------- Anmeldung ----------
# Lokaler Login mit E-Mail und Passwort. Fuer die Entwicklung und als Notfallzugang.
# Im Betrieb mit OIDC auf false setzen.
AUTH_LOCAL_ENABLED=false
# Generischer OIDC-Anbieter, Ziel ist authentik. Leer lassen, um OIDC abzuschalten.
OIDC_ISSUER=
OIDC_CLIENT_ID=
OIDC_CLIENT_SECRET=
OIDC_NAME=authentik
# Angeforderte Bereiche. Der Standard reicht fuer authentik mit dem
# Gruppen-Mapping aus docs/betrieb/authentik.md. Nur aendern, wenn der Anbieter
# die Gruppen unter einem anderen Bereich liefert.
OIDC_SCOPE=openid profile email groups
# Zuordnung der Rollen ueber den groups-Claim. Wird bei jedem Login neu ausgewertet.
OIDC_GROUP_ADMIN=lz-admin
OIDC_GROUP_EDITOR=lz-redakteur
OIDC_GROUP_TECHNICIAN=lz-techniker
OIDC_GROUP_VIEWER=lz-leser
# Optional, nur im Betriebsmodus Dienstleistung: Gruppen wie lz-kunde-MUS binden
# Benutzer an Kunden. TECHNIKER und LESER sehen dann nur ihre Kunden.
# Leer lassen heisst: keine Einschraenkung.
OIDC_CUSTOMER_GROUP_PREFIX=
# ---------- Betrieb ----------
# Adresse, auf die der Webdienst gebunden wird. Standard ist nur localhost,
# davor gehoert ein Reverse Proxy. Fuer direkten Zugriff im LAN: 0.0.0.0
BIND_ADDR=127.0.0.1
APP_PORT=3000
# Wird beim Bauen in die Anzeige unten links uebernommen.
APP_VERSION=0.1.0
GIT_SHA=
# ---------- Seed ----------
SEED_ADMIN_EMAIL=admin@firma.example
SEED_ADMIN_PASSWORD=
# INTERN (Standard) oder DIENSTLEISTUNG. SERVICE wird als Alias akzeptiert.
SEED_MODE=INTERN
# Name der eigenen Organisation. Im Modus INTERN taucht er nirgends in der
# Oberflaeche auf, wird aber beim Wechsel zu DIENSTLEISTUNG zum ersten Kunden.
SEED_ORG_NAME=Eigene Organisation
# 2 bis 6 Grossbuchstaben oder Ziffern. Im Modus INTERN unsichtbar; im Modus
# DIENSTLEISTUNG steht das Kuerzel auf Etiketten und in der Hostname-Regel.
SEED_ORG_KUERZEL=EIGEN
# ---------- Tests ----------
# Datenbank fuer Vitest. Ohne diese Variable ueberspringen sich die Datenbanktests.
# Passend zu docker-compose.dev.yml (Port 5434, umstellbar ueber DEV_DB_PORT):
TEST_DATABASE_URL=postgresql://laufzettel:laufzettel@localhost:5434/laufzettel_test?schema=public