Add invite universal-link landing for app deep-link

Encode the admin invite QR as a clean /invite/<hlv_token> universal-link
that the iOS app intercepts via the AASA wildcard matcher. Add the
matching web route as a thin, shape-validated redirect onto the existing
register flow, and open the path on the public allowlist so an
unauthenticated scanner reaches it. A malformed token segment is
indistinguishable from no invite — no database hit, no enumeration
oracle. The token is never logged.
This commit is contained in:
Marc-André Bombeck committed 2026-06-14 19:32:19 +02:00
1 parent e561f8d893
commit c1eb618dcc
8 files changed
+235 -5

No files matched your search

+2 -1
View File
@@ -13451,7 +13451,8 @@ components:
description: Raw invite token (`hlv_<64hex>`). Shown exactly once — never persisted in plaintext.
url:
type: string
description: Composed registration deep link (`/auth/register?invite=…`).
description: Composed invite universal-link (`/invite/<hlv_token>`). On iOS it opens the app onto onboarding
registration; in a browser it redirects to `/auth/register?invite=…`.
required:
- id
- createdAt