Skip to content

basicbar-auth 0.2.0: Session-Endpunkte im Paket, Admin-Gruppe entzieht nur Gruppenrechte, Session-Index - #16

Merged
rrolf merged 1 commit into
mainfrom
feat/auth-0.2
Oct 1, 2026
Merged

rrolf merged 1 commit into
mainfrom
feat/auth-0.2

Conversation

@rrolf

@rrolf rrolf commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

Was

Vierter PR aus dem Framework-Review (nach Security #13, Template #14, ui #15): basicbar-auth 0.2.0, nur das Paket — die Template-Umstellung auf die neue API folgt nach dem Tag (die Template-CI installiert vom Tag).

Session-Endpunkte und Routen im Paket. ausleihbar, abstimmbar, erkennbar und modulierbar trugen identische whoami/logout_view/set_language-Views und dieselbe URL-Verdrahtung. Jetzt: basicbar_auth.views (whoami_payload/whoami, logout_view, set_language) und basicbar_auth.urls (logout-redirect, silent, backchannel-logout, callback, mozilla, api/whoami/language/; api/whoami/ bleibt Tool-Sache, weil fast jedes Tool Felder ergänzt). AbstractBasicUser bekommt language. Dazu SafeOIDCCallbackView aus abstimmbar (Browser-„Zurück“ nach dem Login → SPA statt 400-Seite), damit alle Tools den Fix haben.

Admin-Gruppe entzieht nur, was sie verliehen hat. OIDC_ADMIN_GROUP setzte bisher bei jedem Login is_staff/is_superuser hart auf die Gruppenmitgliedschaft — eine Beförderung in der Nutzerverwaltung des Tools wurde beim nächsten Login still zurückgenommen. Jetzt wird nur entzogen, wenn der Claims-Snapshot des vorigen Logins die Gruppe enthielt. is_oidc_admin bleibt konsistent dazu (Tool darf IdP-verwaltete Admins nicht lokal entziehen).

Session-Index statt Komplett-Scan. _delete_sessions_for_subject dekodierte jede unabgelaufene Session — bei vielen anonymen Besucher-Sessions (abstimmbar-Teilnehmer) teuer pro SSO-Logout. Neues Model UserSession, gepflegt per user_logged_in/user_logged_out, eigene Migration basicbar_auth 0001 (BigAutoField in der AppConfig gepinnt, Constraint-Name paket-präfixiert). Der Scan bleibt Fallback für Sessions aus der Zeit vor dem Upgrade.

Außerdem: discover_endpoints loggt Fehler (WARNING) und weist Nicht-Objekte ab; filter_users_by_claims ohne überflüssiges exists().

Migration (CHANGELOG)

  1. Tag auth/v0.2.0, migrate.
  2. Optional: eigenes language-Feld in AbstractBasicUser-Erben streichen — Django erlaubt das Überschreiben abstrakter Felder, es kollidiert nichts (gegen erkennbar geprüft: check grün mit und ohne Feld, makemigrations --check leer).
  3. Empfohlen: include("basicbar_auth.urls") + eigenes api/whoami/ mit whoami_payload; lokale Kopien löschen.
  4. Admin-Semantik: lokale Beförderungen werden vom IdP nicht mehr zurückgenommen.

Verifiziert

  • 54 Paket-Tests grün (25 neu: Views, Callback, Session-Index, Discovery, Admin-Gruppe), makemigrations --check gegen die handgeschriebene Migration leer.
  • erkennbar-Backend-Kopie mit dem Paket: komplette Suite grün, Migration läuft auf Postgres.

Danach

Tag auth/v0.2.0 nach dem Merge; dann ein PR mit Template (neue API, Pins ui 0.7.0 + auth 0.2.0, Discovery-Fail-fast) und die Konsumenten-PRs.

🤖 Generated with Claude Code

…ntzieht nur Gruppenrechte, Session-Index

Aus dem Framework-Review: die vier Tools trugen identische whoami/logout/
set_language-Views und dieselbe URL-Verdrahtung. Jetzt im Paket:
basicbar_auth.views (whoami_payload/whoami, logout_view, set_language),
basicbar_auth.urls (OIDC-Routen inkl. SafeOIDCCallbackView aus abstimmbar,
api/whoami/language/), AbstractBasicUser.language.

OIDC_ADMIN_GROUP setzte is_staff/is_superuser bei jedem Login hart auf die
Gruppenmitgliedschaft und nahm lokale Beförderungen still zurück; jetzt wird
nur entzogen, was laut Claims-Snapshot des vorigen Logins aus der Gruppe kam.

Back-Channel-Logout dekodierte jede unabgelaufene Session; neues Model
UserSession (Login-/Logout-Signale, eigene Migration) macht die Löschung
gezielt, der Scan bleibt Fallback für Sessions vor dem Upgrade.

discover_endpoints loggt Fehler; filter_users_by_claims spart das exists()
ohne Fallback. 54 Tests (25 neu). Gegen erkennbar geprüft (Suite grün,
makemigrations --check leer).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant