mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-06-21 22:31: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:
@@ -336,5 +336,24 @@ const admin: TranslationStrings = {
|
||||
'admin.addons.catalog.journey.name': '日記',
|
||||
'admin.addons.catalog.journey.description':
|
||||
'チェックイン、写真、日ごとのストーリーで旅を記録',
|
||||
'admin.passkey.title': 'パスキーログイン',
|
||||
'admin.passkey.cardHint':
|
||||
'ユーザーがパスキー(WebAuthn)でサインインできるようにします。既定では無効です。',
|
||||
'admin.passkey.login': 'パスキーログインを有効化',
|
||||
'admin.passkey.loginHint':
|
||||
'「パスキーでサインイン」オプションを表示し、ユーザーが設定でパスキーを登録できるようにします。',
|
||||
'admin.passkey.notConfigured':
|
||||
'このデプロイにはまだ有効な WebAuthn ドメインがありません。下の APP_URL または Relying Party ID を設定してください。それまでパスキーは表示されません。',
|
||||
'admin.passkey.rpId': 'Relying Party ID(ドメイン)',
|
||||
'admin.passkey.rpIdHint':
|
||||
'パスキーが紐づくドメイン名のみ(例:trek.example.org)。空欄の場合は APP_URL から導出されます。後で変更すると既存のパスキーは無効になります。',
|
||||
'admin.passkey.origins': '許可するオリジン',
|
||||
'admin.passkey.originsHint':
|
||||
'カンマ区切りの完全なオリジン(例:https://trek.example.org)。空欄の場合は APP_URL を使用します。',
|
||||
'admin.passkey.reset': 'パスキーをリセット',
|
||||
'admin.passkey.resetHint':
|
||||
'このユーザーのパスキーをすべて削除します(例:デバイスを紛失した場合)。パスワードでのサインインは引き続き可能です。',
|
||||
'admin.passkey.resetConfirm': '{name} のパスキーをすべて削除しますか?',
|
||||
'admin.passkey.resetDone': '{count} 件のパスキーを削除しました',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -91,5 +91,8 @@ const login: TranslationStrings = {
|
||||
'リンクが無効または破損しています。新しいリンクをリクエストしてください。',
|
||||
'login.resetPasswordFailed':
|
||||
'リセットに失敗しました。リンクの有効期限が切れている可能性があります。',
|
||||
'login.passkey.signIn': 'パスキーでサインイン',
|
||||
'login.passkey.failed':
|
||||
'パスキーでのサインインに失敗しました。もう一度お試しください。',
|
||||
};
|
||||
export default login;
|
||||
|
||||
@@ -276,6 +276,30 @@ const settings: TranslationStrings = {
|
||||
'settings.oauth.badge.machine': 'マシン',
|
||||
"settings.currency": "Currency",
|
||||
"settings.currencyHint": "All amounts in Costs are converted to and shown in this currency.",
|
||||
'settings.passkey.title': 'パスキー',
|
||||
'settings.passkey.description':
|
||||
'指紋、顔認証、PIN、またはハードウェアキーを使うパスキーで、より速く、フィッシングに強いサインインができます。パスワードはバックアップとして残ります。',
|
||||
'settings.passkey.notConfigured':
|
||||
'パスキーは有効ですが、このサーバーではまだ完全には設定されていません。管理者に WebAuthn ドメインの設定を依頼してください。',
|
||||
'settings.passkey.add': 'パスキーを追加',
|
||||
'settings.passkey.addTitle': 'パスキーを追加',
|
||||
'settings.passkey.passwordPrompt':
|
||||
'現在のパスワードを確認し、デバイスの指示に従ってください。',
|
||||
'settings.passkey.passwordRequired': '現在のパスワードが必要です。',
|
||||
'settings.passkey.namePlaceholder': '名前(任意、例:"iPhone")',
|
||||
'settings.passkey.addedToast': 'パスキーを追加しました',
|
||||
'settings.passkey.added': '追加済み',
|
||||
'settings.passkey.addError': 'パスキーを追加できませんでした',
|
||||
'settings.passkey.cancelled': 'パスキーの設定をキャンセルしました',
|
||||
'settings.passkey.deleted': 'パスキーを削除しました',
|
||||
'settings.passkey.deleteConfirm':
|
||||
'このパスキーを削除しますか?パスワードで確認してください。',
|
||||
'settings.passkey.rename': '名前を変更',
|
||||
'settings.passkey.defaultName': 'パスキー',
|
||||
'settings.passkey.synced': '同期済み',
|
||||
'settings.passkey.deviceBound': 'このデバイス',
|
||||
'settings.passkey.lastUsed': '最終使用',
|
||||
'settings.passkey.neverUsed': '未使用',
|
||||
};
|
||||
|
||||
export default settings;
|
||||
|
||||
Reference in New Issue
Block a user