Files
Florian-netz/.env.example
Claude f2578cedab feat(auth): Admin-Zugang über Authentik-Gruppe steuern
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>
2026-06-10 09:39:13 +02:00

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