feat: Add YubiKey OTP support and management features

- Implemented YubiKey OTP settings management in useAccountSecurityActions hook.
- Added API functions for retrieving, saving, and bootstrapping YubiKey OTP credentials.
- Enhanced authentication flow to support multiple two-factor providers, including YubiKey.
- Updated localization files to include new YubiKey-related strings in English, Spanish, Russian, and Chinese.
- Introduced new styles for YubiKey management UI components.
- Created utility functions for YubiKey OTP validation and credential handling.
This commit is contained in:
shuaiplus
2026-07-04 02:49:46 +08:00
parent c7eb6c663d
commit f63b745d05
27 changed files with 1325 additions and 61 deletions
+31
View File
@@ -28,6 +28,35 @@ const ru: Record<string, string> = {
"txt_passkey_provider_help": "Используйте FIDO2-совместимый ключ безопасности или биометрический аутентификатор.",
"txt_yubico_otp_security_key": "Ключ безопасности Yubico OTP",
"txt_yubico_otp_security_key_help": "Используйте устройство YubiKey 4, 5 или NEO.",
"txt_yubikey_setup_intro": "Вставьте YubiKey в USB-порт. Выберите первое пустое поле YubiKey ниже, коснитесь кнопки YubiKey и сохраните форму.",
"txt_yubikey_plug_in": "Вставьте YubiKey в USB-порт.",
"txt_yubikey_select_empty_field": "Выберите первое пустое поле YubiKey ниже.",
"txt_yubikey_touch_button": "Коснитесь кнопки YubiKey.",
"txt_yubikey_save_form": "Сохраните форму.",
"txt_yubikey_x": "YubiKey {index}",
"txt_nfc_support": "Поддержка NFC",
"txt_yubikey_supports_nfc": "Один из моих ключей поддерживает NFC.",
"txt_yubikey_supports_nfc_desc": "Если один из ваших YubiKey поддерживает NFC, мобильные приложения смогут подсказать вам, когда NFC доступен.",
"txt_disable_all_keys": "Отключить все ключи",
"txt_yubikeys_updated": "YubiKey обновлены",
"txt_yubikey_update_failed": "Не удалось обновить YubiKey",
"txt_disable_yubikey_failed": "Не удалось отключить YubiKey",
"txt_yubikey_disabled": "YubiKey отключены",
"txt_yubikey_enabled": "YubiKey включен.",
"txt_yubikey_config_required": "Проверка Yubico не настроена",
"txt_yubikey_config_required_help": "Сначала введите один OTP с YubiKey. NodeWarden автоматически запросит и сохранит Client ID и Secret key экземпляра, затем откроет форму настройки YubiKey.",
"txt_otp_from_yubikey": "OTP с YubiKey",
"txt_please_input_yubikey_otp": "Введите OTP с YubiKey",
"txt_yubikey_verify_failed": "Не удалось проверить YubiKey",
"txt_press_yubikey_to_authenticate": "Нажмите YubiKey для проверки.",
"txt_yubikey_auto_configure": "Получить и сохранить автоматически",
"txt_yubikey_validation_credentials": "Учетные данные проверки Yubico",
"txt_view": "Показать",
"txt_yubikey_config_updated": "Учетные данные проверки Yubico обновлены",
"txt_yubikey_config_update_failed": "Не удалось обновить учетные данные проверки Yubico",
"txt_yubikey_auto_config_failed": "Не удалось получить учетные данные проверки Yubico",
"txt_yubikey_reconfigure_help": "Введите новый OTP, чтобы автоматически запросить и заменить эти учетные данные.",
"txt_yubikey_auto_configure_again": "Получить снова автоматически",
"txt_setting_coming_soon": "Скоро появится.",
"txt_totp_manage_intro": "Отсканируйте QR-код или введите ключ в приложении-аутентификаторе, затем введите код проверки.",
"txt_two_step_recovery_code_warning": "Если вы не можете получить доступ к поставщику двухэтапного входа, одноразовый код восстановления можно использовать для отключения двухэтапного входа. Сохраните код в надежном месте.",
@@ -860,6 +889,8 @@ const ru: Record<string, string> = {
"txt_scope": "Область доступа",
"txt_grant_type": "Тип авторизации",
"txt_refresh": "Обновить",
"txt_refresh_status": "Обновить статус",
"txt_load_failed": "Не удалось загрузить",
"txt_refresh_in_seconds_s": "Обновить через {seconds} с.",
"txt_regenerate": "Регенерировать",
"txt_registration_succeeded_please_sign_in": "Регистрация прошла успешно. Пожалуйста, войдите в систему.",