// Passkeys (Entscheidung 5, 07.10.2026): dünne Hülle um den offiziellen // Laravel-Client für Login-Seite, Sicherheitsseite und Admin-Bestätigung. // Kein eigenes Alpine — die Seiten rufen window.PkPasskeys aus ihren // bestehenden Alpine-Komponenten auf. Ergebnis immer { ok, error, result }. import { Passkeys, InvalidDomainError, NotSupportedError, PasskeyExistsError, UserCancelledError, } from "@laravel/passkeys"; const CONFIRM_ROUTES = { options: "/passkeys/confirm/options", submit: "/passkeys/confirm", }; function messageFor(error) { if (error instanceof UserCancelledError) { return "Der Vorgang wurde abgebrochen."; } if (error instanceof NotSupportedError) { return "Dieser Browser unterstützt keine Passkeys."; } if (error instanceof PasskeyExistsError) { return "Für dieses Gerät ist bereits ein Passkey hinterlegt."; } if (error instanceof InvalidDomainError) { return "Passkeys funktionieren nur auf der Anmeldeseite von pressekonto."; } return "Der Passkey konnte nicht geprüft werden. Bitte versuchen Sie es erneut."; } async function run(action) { try { return { ok: true, error: null, result: await action() }; } catch (error) { return { ok: false, error: messageFor(error), result: null }; } } window.PkPasskeys = { isSupported: () => Passkeys.isSupported(), login: (remember = false) => run(() => Passkeys.verify({ remember })), confirm: () => run(() => Passkeys.verify({ routes: CONFIRM_ROUTES })), register: (name) => run(() => Passkeys.register({ name })), };