fix: Ein unerreichbarer Anmeldedienst zeigte eine Seite mit rohem JSON
Auf "Mit Authentik anmelden" folgt der BROWSER einem Link – da steht kein
fetch(), das eine Fehlerantwort auswerten koennte. Scheiterte der Aufruf des
Anmeldedienstes (Tippfehler in der Discovery-Adresse, Name nicht aufloesbar),
landete der Nutzer auf einer weissen Seite mit {"detail": ...} und musste
zurueckdruecken.
Jetzt geht es zurueck in die Oberflaeche, mit dem Grund in der Adresse – genau
wie bei der Rueckkehr vom Anbieter. Beim Anmelden auf die Login-Seite, beim
Verknuepfen auf "Mein Konto".
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
bd2c623136
commit
62cb6a017c
@@ -115,10 +115,15 @@ def _beginne(db: Session, request: Request, provider: str, weiter: str | None,
|
||||
link_user: User | None) -> RedirectResponse:
|
||||
p = _hole_provider(provider)
|
||||
ziel = _redirect_uri(request, p.name)
|
||||
zurueck = _sicheres_ziel(weiter) if link_user is None else _sicheres_ziel(weiter or "/konto")
|
||||
try:
|
||||
begonnen = oidc_service.start(p, ziel)
|
||||
except oidc_service.OidcFehler as e:
|
||||
raise HTTPException(status_code=status.HTTP_502_BAD_GATEWAY, detail=str(e)) from e
|
||||
# Hier steht ein BROWSER, der einem Link gefolgt ist – keine Antwort auf
|
||||
# fetch(). Eine Fehlerantwort waere eine Seite mit rohem JSON. Also
|
||||
# zurueck in die Oberflaeche, mit dem Grund in der Adresse, genau wie
|
||||
# bei der Rueckkehr vom Anbieter.
|
||||
return _fehlerseite(zurueck if link_user is not None else "/login", str(e))
|
||||
|
||||
# Abgelaufene Versuche wegraeumen – sonst waechst die Tabelle still.
|
||||
db.query(OidcState).filter(OidcState.expires_at < _now()).delete()
|
||||
|
||||
Reference in New Issue
Block a user