Tre fikser funnet under validering:
1. SIKKERHET: Admin-endepunkter manglet autorisasjonssjekk.
Alle /admin/*-endepunkter brukte kun AuthUser (autentisert),
ikke admin-rolle. Ny AdminUser-extractor sjekker owner/admin-edge
til samling — returnerer 403 Forbidden for ikke-admins.
Berører: maintenance, jobs, resources, health, ai, usage.
2. Race condition i toggle_effect: les-modifiser-skriv uten transaksjon
på active_effects JSON. Erstattet med atomisk PG jsonb-operasjon.
3. Manglende updated_by i set_gain, set_mute, set_mixer_role, toggle_effect.
Nå spores hvem som endret mixer-tilstanden.
Backend:
- ws.rs: Fikset WS auth via query-param (browser kan ikke sende headers ved WS upgrade)
- auth.rs: Gjort decoding_key pub for gjenbruk i ws-modulen
Frontend:
- pg-ws.svelte.ts: Ny PG WebSocket-klient med auto-reconnect og event-logging
- index.ts: Eksporterer pgWsConnect/pgWsDisconnect/pgWsState
- +layout.svelte: Kobler til PG WS i parallell med STDB for verifisering
Docs:
- api_grensesnitt.md: Dokumentert /ws endepunkt og sanntidsarkitektur
- tasks.md: Merket 22.1 som ferdig
Deploy: Krever restart av maskinrommet + rebuild av frontend.
- Fikser audience-validering (AUTHENTIK_CLIENT_ID som forventet aud)
- Oppdaterer seed-data med reell Authentik sub for Vegard
- Fikser DATABASE_URL i .env: peker nå til synops-database (ikke sidelinja)
- Dokumenterer maskinrommet-miljøvariabler i produksjon.md
- Markerer oppgave 2.2 som ferdig i tasks.md
Verifisert på server med fem testcaser:
1. /health (public) → 200
2. /me uten token → 401 "Mangler Authorization-header"
3. /me med ugyldig token → 401 "Ugyldig token"
4. /me med gyldig JWT, ukjent sub → 401 "Ukjent brukeridentitet"
5. /me med gyldig JWT, kjent sub → 200 med node_id
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Legger til Authentik JWT-validering i maskinrommet:
- Henter JWKS fra Authentik ved oppstart
- Validerer RS256-signatur, issuer og utløpstid
- Slår opp sub-claim i auth_identities → node_id
- AuthUser axum-extractor for beskyttede endepunkter
- /me test-endepunkt som krever gyldig token
- /health forblir offentlig
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>