fix(mobile): Login-Button nach Keycloak-Redirect wieder sichtbar #192

Closed
opened 2026-05-05 17:54:46 +02:00 by admin-mrrm · 0 comments
Owner

Problem

Nach erfolgreichem Keycloak-Login landet der User wieder auf dem Login-Screen mit dem Anmelden-Button, obwohl die Authentifizierung eigentlich funktioniert hat.

Ursache

Auf Android feuert das OS nach dem OAuth-Redirect zwei Pfade parallel:

  1. openAuthSessionAsync (Chrome Custom Tab) erkennt den mrrmlab://-Redirect
  2. Ein Deep-Link-Intent öffnet app/auth/callback.tsx direkt

Wenn Pfad 2 zuerst abschließt (Code gegen Token getauscht, pendingLogin gelöscht), gibt openAuthSessionAsync { type: "dismiss" } zurück — nicht "success". performLogin returned dann false, obwohl der User eingeloggt ist.

Fix

In apps/mobile/src/services/auth.ts: bei result.type !== "success" nicht sofort false zurückgeben, sondern auth.isAuthenticated() prüfen.

// vorher
if (result.type !== "success" || !result.url) {
  return false;
}

// nachher
if (result.type !== "success" || !result.url) {
  return auth.isAuthenticated();
}
## Problem Nach erfolgreichem Keycloak-Login landet der User wieder auf dem Login-Screen mit dem Anmelden-Button, obwohl die Authentifizierung eigentlich funktioniert hat. ## Ursache Auf Android feuert das OS nach dem OAuth-Redirect zwei Pfade parallel: 1. `openAuthSessionAsync` (Chrome Custom Tab) erkennt den `mrrmlab://`-Redirect 2. Ein Deep-Link-Intent öffnet `app/auth/callback.tsx` direkt Wenn Pfad 2 zuerst abschließt (Code gegen Token getauscht, `pendingLogin` gelöscht), gibt `openAuthSessionAsync` `{ type: "dismiss" }` zurück — nicht `"success"`. `performLogin` returned dann `false`, obwohl der User eingeloggt ist. ## Fix In `apps/mobile/src/services/auth.ts`: bei `result.type !== "success"` nicht sofort `false` zurückgeben, sondern `auth.isAuthenticated()` prüfen. ```typescript // vorher if (result.type !== "success" || !result.url) { return false; } // nachher if (result.type !== "success" || !result.url) { return auth.isAuthenticated(); } ```
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
admin-mrrm/mrrmlabapp#192
No description provided.