Mobil: Einstieg in die Anmeldung und Rückweg aus E-Mail-Links fehlen (iOS/Android) #49

Open
opened 2026-11-03 12:45:58 +00:00 by cschlaefke · 1 comment
Owner

Befund

Beim Durchspielen von KTO-01 im iOS-Simulator (main @ 455b3bf, lokales Supabase) zeigte sich:

  1. Kein Einstieg in die Anmeldung. Die App startet auf der öffentlichen Platzhalter-Startseite (HomeScreen). privatePaths in auth_redirect.dart ist leer, und die Startseite hat keinen Link zu /login oder /register. Die Auth-Screens sind nur per URL erreichbar, also nur im Web. Auf iOS/Android gibt es keinen Weg dorthin.
  2. Kein Rückweg aus E-Mail-Links. Die Bestätigungsmail verlinkt auf <SITE_URL>/auth/confirm?token_hash=…&type=email. Ohne Universal/App Links öffnet der Link auf dem Gerät die App nicht. Bestätigung und Passwort-Reset lassen sich auf Mobilgeräten daher nicht abschließen.

Was ging

Registrierformular mit Validierung (u. a. Altersangabe) und neutrale Seite „Prüfe dein Postfach" funktionierten im Simulator. Mail kam in Mailpit an.

Vorschlag (zur Klärung, nicht Teil dieses Issues festgelegt)

  • Einstieg: Anmelden/Registrieren-Zugang auf der Startseite bzw. Navigation (Berührungspunkte mit QUE-09 #29 und KTO-11 #28).
  • Rückweg: Universal Links (iOS) und App Links (Android) für /auth/confirm und /reset-password, inkl. Hosting der Zuordnungsdateien (apple-app-site-association, assetlinks.json) und Abstimmung mit D1 (Produktions-Setup, SITE_URL, Mailvorlagen).

Akzeptanz (Entwurf)

  • Auf iOS und Android ist die Anmeldung aus der App heraus erreichbar.
  • Der Bestätigungslink aus der Mail öffnet die App und schließt die Registrierung ab.
  • Der Passwort-Reset-Link öffnet die App und führt in den Reset-Ablauf.
  • Verhalten ohne installierte App (Fallback im Web) ist beschrieben.

Nicht getestet

Android, echter Screenreader, physisches Gerät. Login und Reset habe ich im Simulator nicht gesehen, weil die Bestätigung nicht abschließbar war.

Refs #1

## Befund Beim Durchspielen von KTO-01 im iOS-Simulator (main @ 455b3bf, lokales Supabase) zeigte sich: 1. **Kein Einstieg in die Anmeldung.** Die App startet auf der öffentlichen Platzhalter-Startseite (`HomeScreen`). `privatePaths` in `auth_redirect.dart` ist leer, und die Startseite hat keinen Link zu `/login` oder `/register`. Die Auth-Screens sind nur per URL erreichbar, also nur im Web. Auf iOS/Android gibt es keinen Weg dorthin. 2. **Kein Rückweg aus E-Mail-Links.** Die Bestätigungsmail verlinkt auf `<SITE_URL>/auth/confirm?token_hash=…&type=email`. Ohne Universal/App Links öffnet der Link auf dem Gerät die App nicht. Bestätigung und Passwort-Reset lassen sich auf Mobilgeräten daher nicht abschließen. ## Was ging Registrierformular mit Validierung (u. a. Altersangabe) und neutrale Seite „Prüfe dein Postfach" funktionierten im Simulator. Mail kam in Mailpit an. ## Vorschlag (zur Klärung, nicht Teil dieses Issues festgelegt) - Einstieg: Anmelden/Registrieren-Zugang auf der Startseite bzw. Navigation (Berührungspunkte mit QUE-09 #29 und KTO-11 #28). - Rückweg: Universal Links (iOS) und App Links (Android) für `/auth/confirm` und `/reset-password`, inkl. Hosting der Zuordnungsdateien (`apple-app-site-association`, `assetlinks.json`) und Abstimmung mit D1 (Produktions-Setup, SITE_URL, Mailvorlagen). ## Akzeptanz (Entwurf) - [ ] Auf iOS und Android ist die Anmeldung aus der App heraus erreichbar. - [ ] Der Bestätigungslink aus der Mail öffnet die App und schließt die Registrierung ab. - [ ] Der Passwort-Reset-Link öffnet die App und führt in den Reset-Ablauf. - [ ] Verhalten ohne installierte App (Fallback im Web) ist beschrieben. ## Nicht getestet Android, echter Screenreader, physisches Gerät. Login und Reset habe ich im Simulator nicht gesehen, weil die Bestätigung nicht abschließbar war. Refs #1
cschlaefke added this to the R1 milestone 2026-11-03 12:45:58 +00:00
cschlaefke added the
type/tech
prio/should
labels 2026-11-03 12:45:58 +00:00
Author
Owner

Die technische Spec liegt zur Freigabe bereit: docs/specs/49-mobil-anmeldung-app-links.md auf dem Branch docs/49-mobil-login-spec. Einen PR gibt es noch nicht.

Empfehlung in Kürze

  • Einstieg: Wer abgemeldet ist, sieht auf der Startseite eine Hinweis-Karte mit „Anmelden“ und „Konto erstellen“. Das gilt auf allen Plattformen, auch im Web, weil QUE-09 Kriterium 13 es verlangt. QUE-09 kann die Karte später übernehmen.
  • Rückweg aus den Mails: Universal Links (iOS) und App Links (Android) auf der bestehenden https-Adresse. Sie gelten nur für genau /auth/confirm. /reset-password braucht keinen Link, die App leitet nach verifyOTP selbst dorthin. Ein eigenes URL-Schema empfehle ich nicht: Ohne App fehlt dann der Rückfall auf das Web, und eine fremde App könnte den Reset-Token abfangen.
  • Keine Backend-Änderung. Mailvorlagen und Allow-List bleiben, wie sie sind. Der Host von SITE_URL muss aber die Domain sein, auf der die Zuordnungsdateien liegen.
  • Aufteilung: Ein Issue mit zwei PRs. PR A (Einstieg) lässt sich sofort umsetzen. PR B (App Links) lässt sich mit Platzhaltern mergen. Ob die Links auf echten Geräten funktionieren, lässt sich erst nach deinen Aufgaben C1–C6 prüfen.

Aufgaben, die nur du erledigen kannst (§ 8.3)

  • C1: Apple Developer Program und Team-ID
  • C2: Play Console mit Play App Signing, Upload-Keystore und beide SHA-256-Werte
  • C3: Bundle- bzw. Application-ID endgültig festlegen
  • C4: Produktions-Domain festlegen; sie muss öffentlich erreichbar sein
  • C5: auf Prod die Dateien /.well-known/apple-app-site-association und /.well-known/assetlinks.json ausliefern und GOTRUE_SITE_URL setzen
  • C6: Test auf echten Geräten

Offene Fragen mit Empfehlung (§ 9.2): F1 bis F10, unter anderem zum Umfang der Pfade, zu webcredentials, zu einem vorläufigen Abmelden, zu Staging-Builds, zum Zeitpunkt, an dem #49 geschlossen wird, und zu einem fehlenden Issue für das Produktions-Setup nach ADR-0002.

Die Umsetzung beginnt erst, wenn du freigibst.

Die technische Spec liegt zur Freigabe bereit: [`docs/specs/49-mobil-anmeldung-app-links.md`](https://git.cshomelabs.work/cschlaefke/Shuffle/src/branch/docs/49-mobil-login-spec/docs/specs/49-mobil-anmeldung-app-links.md) auf dem Branch `docs/49-mobil-login-spec`. Einen PR gibt es noch nicht. **Empfehlung in Kürze** - **Einstieg:** Wer abgemeldet ist, sieht auf der Startseite eine Hinweis-Karte mit „Anmelden“ und „Konto erstellen“. Das gilt auf allen Plattformen, auch im Web, weil QUE-09 Kriterium 13 es verlangt. QUE-09 kann die Karte später übernehmen. - **Rückweg aus den Mails:** Universal Links (iOS) und App Links (Android) auf der bestehenden https-Adresse. Sie gelten nur für genau `/auth/confirm`. `/reset-password` braucht keinen Link, die App leitet nach `verifyOTP` selbst dorthin. Ein eigenes URL-Schema empfehle ich nicht: Ohne App fehlt dann der Rückfall auf das Web, und eine fremde App könnte den Reset-Token abfangen. - **Keine Backend-Änderung.** Mailvorlagen und Allow-List bleiben, wie sie sind. Der Host von `SITE_URL` muss aber die Domain sein, auf der die Zuordnungsdateien liegen. - **Aufteilung:** Ein Issue mit zwei PRs. PR A (Einstieg) lässt sich sofort umsetzen. PR B (App Links) lässt sich mit Platzhaltern mergen. Ob die Links auf echten Geräten funktionieren, lässt sich erst nach deinen Aufgaben C1–C6 prüfen. **Aufgaben, die nur du erledigen kannst (§ 8.3)** - C1: Apple Developer Program und Team-ID - C2: Play Console mit Play App Signing, Upload-Keystore und beide SHA-256-Werte - C3: Bundle- bzw. Application-ID endgültig festlegen - C4: Produktions-Domain festlegen; sie muss öffentlich erreichbar sein - C5: auf Prod die Dateien `/.well-known/apple-app-site-association` und `/.well-known/assetlinks.json` ausliefern und `GOTRUE_SITE_URL` setzen - C6: Test auf echten Geräten **Offene Fragen mit Empfehlung (§ 9.2):** F1 bis F10, unter anderem zum Umfang der Pfade, zu `webcredentials`, zu einem vorläufigen Abmelden, zu Staging-Builds, zum Zeitpunkt, an dem #49 geschlossen wird, und zu einem fehlenden Issue für das Produktions-Setup nach ADR-0002. Die Umsetzung beginnt erst, wenn du freigibst.
cschlaefke added the
status/spec-review
label 2026-11-03 19:46:42 +00:00
cschlaefke removed the
status/spec-review
label 2026-11-03 23:54:13 +00:00
Sign in to join this conversation.
No description provided.