mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-06-21 14:21:46 +00:00
feat: Passkey (WebAuthn) login (#1111)
* feat(auth): passkey (WebAuthn) login — server endpoints, schema + admin toggle Add @simplewebauthn/server registration and primary (discoverable) login ceremonies under /api/auth/passkey, a webauthn_credentials + single-use webauthn_challenges schema (migration), the instance-wide passkey_login toggle (default off) enforced before auth by a guard, and require_mfa satisfaction via a verified passkey. RP ID/origin come only from server config (webauthn_rp_id/origins -> APP_URL), never request headers. * feat(auth): passkey enrolment, login button + admin settings UI PasskeysSection in account settings (add/rename/remove with a current-password step-up), a 'Sign in with a passkey' button on the login page, the admin enable + RP-ID/origins controls, and a per-user admin reset action. * i18n(auth): passkey strings across all locales Add login/settings/admin passkey keys to en and all 19 translated locales.
This commit is contained in:
@@ -369,5 +369,24 @@ const admin: TranslationStrings = {
|
||||
'admin.addons.catalog.journey.name': 'Journal de voyage',
|
||||
'admin.addons.catalog.journey.description':
|
||||
'Suivi de voyages et journal avec check-ins, photos et récits quotidiens',
|
||||
'admin.passkey.title': 'Connexion par passkey',
|
||||
'admin.passkey.cardHint':
|
||||
'Permettez aux utilisateurs de se connecter avec des passkeys (WebAuthn). Désactivé par défaut.',
|
||||
'admin.passkey.login': 'Activer la connexion par passkey',
|
||||
'admin.passkey.loginHint':
|
||||
'Affiche une option « Se connecter avec une passkey » et permet aux utilisateurs d\'enregistrer des passkeys dans leurs paramètres.',
|
||||
'admin.passkey.notConfigured':
|
||||
"Aucun domaine WebAuthn ne peut encore être résolu pour ce déploiement. Définissez APP_URL ou le Relying Party ID ci-dessous — les passkeys restent masquées jusque-là.",
|
||||
'admin.passkey.rpId': 'Relying Party ID (domaine)',
|
||||
'admin.passkey.rpIdHint':
|
||||
"Le domaine nu auquel les passkeys sont liées, ex. trek.example.org. Laissez vide pour le déduire d'APP_URL. Le modifier ultérieurement invalide les passkeys existantes.",
|
||||
'admin.passkey.origins': 'Origines autorisées',
|
||||
'admin.passkey.originsHint':
|
||||
"Origines complètes séparées par des virgules, ex. https://trek.example.org. Laissez vide pour utiliser APP_URL.",
|
||||
'admin.passkey.reset': 'Réinitialiser les passkeys',
|
||||
'admin.passkey.resetHint':
|
||||
"Supprime toutes les passkeys de cet utilisateur (ex. en cas d'appareil perdu). Il pourra toujours se connecter avec son mot de passe.",
|
||||
'admin.passkey.resetConfirm': 'Supprimer toutes les passkeys de {name} ?',
|
||||
'admin.passkey.resetDone': '{count} passkey(s) supprimée(s)',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
Reference in New Issue
Block a user