Statt manuell gesetzter DB-Rolle erhalten Mitglieder der Authentik-Gruppe AUTHENTIK_ADMIN_GROUP (Default floriannetz-admins) beim SSO-Login automatisch platform_admin; Nicht-Mitglieder werden abgewiesen. Erstes Seeding entfällt. - auth.config.ts: Scope 'openid email profile groups' anfordern - lib/auth/authentik.ts: reine Helfer extractGroups/isAdminGroupMember (+ 7 Unit-Tests) - auth.ts: signIn wertet groups-Claim aus, upsert (idempotent) als platform_admin mit stabiler users.id für Audit/FKs - env.ts/.env.example: AUTHENTIK_ADMIN_GROUP - docs/reference/authentik-setup.md: Provider-/Gruppen-/Scope-Setup Verifiziert offline: tsc OK; lint sauber; vitest 240 passed / 7 skipped. Wehr-Konten bleiben lokale Accounts (kein Authentik). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
45 lines
1.7 KiB
Plaintext
45 lines
1.7 KiB
Plaintext
# FlorianNetz — Umgebungsvariablen (Beispiel; KEINE echten Geheimnisse committen)
|
|
|
|
# Node
|
|
NODE_ENV=development
|
|
|
|
# Datenbank (Postgres)
|
|
DATABASE_URL=postgres://floriannetz:floriannetz@localhost:5432/floriannetz
|
|
|
|
# Auth.js / NextAuth
|
|
# AUTH_SECRET muss >= 32 Zeichen sein (z. B. `openssl rand -base64 32`)
|
|
AUTH_SECRET=bitte-mindestens-32-zeichen-langes-geheimnis-setzen
|
|
# AUTH_URL bestimmt Cookie-secure: http:// = lokal (unsicher), https:// = Produktion
|
|
AUTH_URL=http://localhost:3000
|
|
AUTH_TRUST_HOST=true
|
|
|
|
# Authentik (OIDC-Provider)
|
|
AUTHENTIK_ISSUER=http://localhost:9000/application/o/floriannetz/
|
|
AUTHENTIK_CLIENT_ID=floriannetz
|
|
AUTHENTIK_CLIENT_SECRET=bitte-setzen
|
|
# Mitglieder dieser Authentik-Gruppe erhalten beim Login automatisch
|
|
# platform_admin. Wer NICHT in der Gruppe ist, wird vom SSO-Login abgewiesen.
|
|
# Setup siehe docs/reference/authentik-setup.md.
|
|
AUTHENTIK_ADMIN_GROUP=floriannetz-admins
|
|
|
|
# Geo (interne Dienste; Defaults zeigen auf Docker-Compose-Hostnamen)
|
|
OSRM_URL=http://osrm:5000
|
|
NOMINATIM_URL=http://nominatim:8080
|
|
GEO_HTTP_TIMEOUT_MS=4000
|
|
HAVERSINE_KMH=50
|
|
|
|
# Deployment / externes Traefik
|
|
# APP_HOST ist der öffentliche Hostname (Traefik-Routing + AUTH_URL-Basis).
|
|
# In Produktion: AUTH_URL=https://${APP_HOST} und AUTH_TRUST_HOST=true setzen.
|
|
APP_HOST=floriannetz.example.at
|
|
# Traefik-Zertifikatsauflöser (muss in der externen Traefik-Instanz definiert sein).
|
|
TRAEFIK_CERTRESOLVER=letsencrypt
|
|
# Name des externen, von Traefik verwalteten Docker-Netzes.
|
|
TRAEFIK_NETWORK=traefik
|
|
# Optionaler Katalog-Seed beim Container-Start (idempotent).
|
|
RUN_SEED=false
|
|
# Postgres-Zugangsdaten für den Compose-Postgres-Service.
|
|
POSTGRES_USER=floriannetz
|
|
POSTGRES_PASSWORD=floriannetz
|
|
POSTGRES_DB=floriannetz
|