Merge branch 'security-key-without-2fa' into 'develop'
Make security key independent of 2FA Co-authored-by: TrojanerHD <github@trojaner.dev> Closes #8610 See merge request firefish/firefish!10670
This commit is contained in:
commit
f8bc26bd6b
24 changed files with 44 additions and 208 deletions
|
@ -417,8 +417,6 @@ audio: Звук
|
|||
removeQuote: Премахни цитат
|
||||
_sfx:
|
||||
notification: Известия
|
||||
_2fa:
|
||||
renewTOTPCancel: Отмяна
|
||||
_permissions:
|
||||
"read:favorites": Виж списъка си с отметки
|
||||
"write:favorites": Редактирай списъка си с отметки
|
||||
|
|
|
@ -335,20 +335,11 @@ _2fa:
|
|||
securityKeyName: Introduïu un nom de clau
|
||||
removeKey: Suprimeix la clau de seguretat
|
||||
removeKeyConfirm: Vols suprimir la clau {name}?
|
||||
renewTOTP: Tornar a configurar l'aplicació d'autenticació
|
||||
renewTOTPOk: Reconfigurar
|
||||
renewTOTPCancel: Cancel·lar
|
||||
step2Click: Fer clic en aquest codi QR us permetrà registrar 2FA a la vostra clau
|
||||
de seguretat o aplicació d'autenticació del telèfon.
|
||||
securityKeyNotSupported: El vostre navegador no admet claus de seguretat.
|
||||
registerTOTPBeforeKey: Configureu una aplicació d'autenticació per registrar una
|
||||
clau de seguretat o de passi.
|
||||
tapSecurityKey: Si us plau, seguiu el vostre navegador per registrar la clau de
|
||||
seguretat o d'accés
|
||||
renewTOTPConfirm: Això farà que els codis de verificació de l'aplicació anterior
|
||||
deixin de funcionar
|
||||
whyTOTPOnlyRenew: L’aplicació d’autenticació no es pot eliminar sempre que es hi
|
||||
hagi una clau de seguretat registrada.
|
||||
token: Token 2FA
|
||||
_widgets:
|
||||
notifications: "Notificacions"
|
||||
|
|
|
@ -1402,23 +1402,14 @@ _2fa:
|
|||
deinem Gerät auch Anmeldung mit Hilfe eines FIDO2-kompatiblen Hardware-Sicherheitsschlüssels
|
||||
einrichten."
|
||||
step3Title: Gib deinen Authentifizierungscode ein
|
||||
renewTOTPOk: Neu konfigurieren
|
||||
securityKeyNotSupported: Dein Browser unterstützt Hardware-Security-Keys nicht.
|
||||
chromePasskeyNotSupported: Chrome Passkeys werden momentan nicht unterstützt.
|
||||
renewTOTP: Konfiguriere deine Authenticator App neu
|
||||
renewTOTPCancel: Abbrechen
|
||||
tapSecurityKey: Bitte folge den Anweisungen deines Browsers, um einen Hardware-Security-Key
|
||||
oder einen Passkey zu registrieren
|
||||
removeKey: Entferne deinen Hardware-Security-Key
|
||||
removeKeyConfirm: Möchtest du wirklich deinen Key mit der Bezeichnung {name} löschen?
|
||||
renewTOTPConfirm: Das wird dazu führen, dass du Verifizierungscodes deiner vorherigen
|
||||
Authenticator App nicht mehr nutzen kannst
|
||||
whyTOTPOnlyRenew: Die Authentificator App kann nicht entfernt werden, solange ein
|
||||
Hardware-Security-Key registriert ist.
|
||||
step2Click: Ein Klick auf diesen QR-Code erlaubt es dir eine 2FA-Methode zu deinem
|
||||
Security Key oder deiner Authenticator App hinzuzufügen.
|
||||
registerTOTPBeforeKey: Bitte registriere eine Authentificator App, um einen Hardware-Security-Key
|
||||
oder einen Passkey zu nutzen.
|
||||
securityKeyName: Gib einen Namen für den Key ein
|
||||
token: 2FA Token
|
||||
_permissions:
|
||||
|
|
|
@ -1586,8 +1586,6 @@ _2fa:
|
|||
step3: "Enter the token provided by your app to finish setup."
|
||||
step4: "From now on, any future login attempts will ask for such a login token."
|
||||
securityKeyNotSupported: "Your browser does not support security keys."
|
||||
registerTOTPBeforeKey: "Please set up an authenticator app to register a security
|
||||
or pass key."
|
||||
securityKeyInfo: "Besides fingerprint or PIN authentication, you can also setup
|
||||
authentication via hardware security keys that support FIDO2 to further secure
|
||||
your account."
|
||||
|
@ -1597,13 +1595,6 @@ _2fa:
|
|||
tapSecurityKey: "Please follow your browser to register the security or pass key"
|
||||
removeKey: "Remove security key"
|
||||
removeKeyConfirm: "Really delete the {name} key?"
|
||||
whyTOTPOnlyRenew: "The authenticator app cannot be removed as long as a security
|
||||
key is registered."
|
||||
renewTOTP: "Reconfigure authenticator app"
|
||||
renewTOTPConfirm: "This will cause verification codes from your previous app to
|
||||
stop working"
|
||||
renewTOTPOk: "Reconfigure"
|
||||
renewTOTPCancel: "Cancel"
|
||||
token: "2FA Token"
|
||||
_permissions:
|
||||
"read:account": "View your account information"
|
||||
|
|
|
@ -1381,21 +1381,12 @@ _2fa:
|
|||
chromePasskeyNotSupported: Contraseñas de Chrome no están soportadas.
|
||||
removeKeyConfirm: ¿Realmente deseas borrar la clave {name}?
|
||||
step3Title: Ingresa un código de autorización
|
||||
renewTOTP: Reconfigurar la aplicación autorizadora
|
||||
whyTOTPOnlyRenew: La aplicación autorizadora no puede ser quitada mientras la clave
|
||||
de seguridad siga registrada.
|
||||
renewTOTPConfirm: Esto causará que los códigos de verificación de la aplicación
|
||||
anterior dejen de funcionar
|
||||
renewTOTPOk: Reconfigurar
|
||||
securityKeyNotSupported: Tu navegador no soporta claves de seguridad.
|
||||
step2Click: Presionar este código QR te permitirá registrar la autorización 2FA
|
||||
a tu clave de seguridad o aplicación autorizadora.
|
||||
registerTOTPBeforeKey: Por favor configura una aplicación autorizadora para registrar
|
||||
una clave de seguridad o de paso.
|
||||
securityKeyName: Ingresa el nombre de la clave
|
||||
tapSecurityKey: Por favor, espera al navegador para registrar la clave de seguridad
|
||||
o de paso
|
||||
renewTOTPCancel: Cancelar
|
||||
token: Token 2FA
|
||||
removeKey: Quitar clave de seguridad
|
||||
_permissions:
|
||||
|
|
|
@ -1312,19 +1312,10 @@ _2fa:
|
|||
step2Click: En cliquant sur ce QR code, vous pourrez enregistrer l'authentification
|
||||
à deux facteurs (2FA) sur votre clé de sécurité ou votre application d'authentification
|
||||
sur téléphone.
|
||||
whyTOTPOnlyRenew: L'application d'authentification ne peut pas être supprimée tant
|
||||
qu'une clé de sécurité est enregistrée.
|
||||
securityKeyName: Entrez un nom de clé
|
||||
removeKeyConfirm: Voulez-vous vraiment supprimer la clé {name} ?
|
||||
renewTOTP: Reconfigurer l'application d'authentification
|
||||
renewTOTPConfirm: Cela entraînera l'arrêt de fonctionnement des codes de vérification
|
||||
provenant de votre application précédente
|
||||
renewTOTPOk: Reconfigurer
|
||||
securityKeyNotSupported: Votre navigateur ne prend pas en charge les clés de sécurité.
|
||||
removeKey: Supprimer la clé de sécurité
|
||||
renewTOTPCancel: Annuler
|
||||
registerTOTPBeforeKey: Veuillez configurer une application d'authentification pour
|
||||
enregistrer une clé de sécurité ou un mot de passe.
|
||||
tapSecurityKey: Veuillez suivre les instructions de votre navigateur pour enregistrer
|
||||
la clé de sécurité ou le mot de passe
|
||||
_permissions:
|
||||
|
|
|
@ -1300,8 +1300,6 @@ _2fa:
|
|||
securityKeyInfo: "Kamu dapat memasang otentikasi WebAuthN untuk mengamankan proses
|
||||
login lebih lanjut dengan tidak hanya perangkat keras kunci keamanan yang mendukung
|
||||
FIDO2, namun juga sidik jari atau otentikasi PIN pada perangkatmu."
|
||||
renewTOTPConfirm: Ini akan menyebabkan kode verifikasi dari aplikasimu sebelumnya
|
||||
berhenti bekerja
|
||||
token: Token 2FA
|
||||
chromePasskeyNotSupported: Kunci pas Chrome saat ini tidak didukung.
|
||||
securityKeyName: Masukkan nama kunci
|
||||
|
@ -1310,15 +1308,9 @@ _2fa:
|
|||
keamanan atau apl ontentikasi ponsel.
|
||||
step3Title: Masukkan kode otentikasi
|
||||
securityKeyNotSupported: Perambanmu tidak mendukung kunci keamanan.
|
||||
renewTOTPOk: Konfigurasi ulang
|
||||
renewTOTPCancel: Batal
|
||||
registerTOTPBeforeKey: Silakan atur apl otentikator untuk mendaftarkan kunci keamanan
|
||||
atau kunci pas.
|
||||
tapSecurityKey: Silakan ikuti perambanmu untuk mendaftarkan kunci keamanan atau
|
||||
kunci pas
|
||||
removeKeyConfirm: Yakin menghapus kunci {name}?
|
||||
whyTOTPOnlyRenew: Apl otentikator tidak dapat dihapus selama kunci keamanan didaftarkan.
|
||||
renewTOTP: Konfigurasi ulang apl otentikator
|
||||
_permissions:
|
||||
"read:account": "Lihat informasi akun"
|
||||
"write:account": "Sunting informasi akun"
|
||||
|
|
|
@ -1220,7 +1220,6 @@ _tutorial:
|
|||
_2fa:
|
||||
registerTOTP: "Aggiungi app di autenticazione"
|
||||
securityKeyName: Scegli un nome per la chiave
|
||||
renewTOTPOk: Riconfigura
|
||||
step2: Poi, scansiona il QR code mostrato a schermo.
|
||||
securityKeyInfo: Oltre alle impronte digitali o al PIN, puoi anche autenticarti
|
||||
con chiavi di sicurezza hardware che supportano FIDO2 per rendere il tuo account
|
||||
|
@ -1230,19 +1229,12 @@ _2fa:
|
|||
fattori (2FA).
|
||||
step3: Inserisci il token fornito dalla tua app per terminare.
|
||||
step4: Da ora in poi i futuri tentativi di login necessiteranno del token.
|
||||
registerTOTPBeforeKey: Prima installa una app di autenticazione o registra una chiave
|
||||
di sicurezza o una pass key.
|
||||
token: Token 2FA
|
||||
whyTOTPOnlyRenew: La app di autenticazione non può essere rimossa finché la chiave
|
||||
di sicurezza è registrata.
|
||||
step2Click: Cliccando sul QR code potrai registrare la 2FA nella tua chiave di sicurezza
|
||||
o nella app di autenticazione dello smartphone.
|
||||
step2Url: 'Puoi anche chiamare questo URL se sei su desktop:'
|
||||
securityKeyNotSupported: Il tuo browser non supporta le chiavi di sicurezza.
|
||||
chromePasskeyNotSupported: Le passkey di Chrome non sono supportate.
|
||||
renewTOTPConfirm: I codici di verifica già impostati in precedenza smetteranno di
|
||||
funzionare
|
||||
renewTOTP: Riconfigura la app di autenticazione
|
||||
registerSecurityKey: Registra una chiave di sicurezza o pass key
|
||||
step1: Prima di tutto, installa una app di autenticazione (tipo {a} o {b}) sul tuo
|
||||
device.
|
||||
|
@ -1250,7 +1242,6 @@ _2fa:
|
|||
sicurezza o la pass key
|
||||
removeKey: Rimuovi la chiave di sicurezza
|
||||
removeKeyConfirm: Confermi la rimozione della chiave {name} ?
|
||||
renewTOTPCancel: Annulla
|
||||
_permissions:
|
||||
"read:account": "Visualizzare le informazioni dell'account"
|
||||
"write:account": "Modificare le informazioni dell'account"
|
||||
|
|
|
@ -1355,7 +1355,6 @@ _2fa:
|
|||
step3: "アプリに表示されている確認コード(トークン)を入力して完了です。"
|
||||
step4: "これからログインするときも、同じように確認コードを入力します。"
|
||||
securityKeyNotSupported: "お使いのブラウザはセキュリティキーに対応していません。"
|
||||
registerTOTPBeforeKey: "セキュリティキー・パスキーを登録するには、まず認証アプリの設定を行なってください。"
|
||||
securityKeyInfo: "FIDO2をサポートするハードウェアセキュリティキー、端末の生体認証やPINロック、パスキーといった、WebAuthn由来の鍵を登録します。"
|
||||
chromePasskeyNotSupported: "Chromeのパスキーは現在サポートしていません。"
|
||||
registerSecurityKey: "セキュリティキー・パスキーを登録する"
|
||||
|
@ -1363,11 +1362,6 @@ _2fa:
|
|||
tapSecurityKey: "ブラウザの指示に従い、セキュリティキーやパスキーを登録してください"
|
||||
removeKey: "セキュリティキーを削除"
|
||||
removeKeyConfirm: "{name}を削除しますか?"
|
||||
whyTOTPOnlyRenew: "セキュリティキーが登録されている場合、認証アプリの設定は解除できません。"
|
||||
renewTOTP: "認証アプリを再設定"
|
||||
renewTOTPConfirm: "今までの認証アプリの確認コードは使用できなくなります"
|
||||
renewTOTPOk: "再設定する"
|
||||
renewTOTPCancel: "やめておく"
|
||||
token: "多要素認証トークン"
|
||||
_permissions:
|
||||
"read:account": "アカウントの情報を見る"
|
||||
|
|
|
@ -1242,18 +1242,12 @@ _2fa:
|
|||
수 있습니다."
|
||||
step2Click: QR 코드를 클릭하여 사용 중인 보안 키 또는 인증 앱을 등록할 수 있습니다.
|
||||
step3Title: 확인 코드를 입력
|
||||
registerTOTPBeforeKey: 보안 키/패스 키를 등록하시려면 우선 인증 앱 설정을 마치십시오.
|
||||
securityKeyNotSupported: 이 브라우저는 보안 키를 지원하지 않습니다.
|
||||
chromePasskeyNotSupported: 현재 Chrome의 패스키는 지원하지 않습니다.
|
||||
token: 2차 인증 토큰
|
||||
removeKey: 보안 키를 삭제
|
||||
removeKeyConfirm: '{name}을 삭제하시겠습니까?'
|
||||
renewTOTPCancel: 취소
|
||||
renewTOTPConfirm: 지금 사용 중인 인증 앱의 확인 코드는 사용할 수 없게 됩니다
|
||||
securityKeyName: 키 이름 입력
|
||||
renewTOTPOk: 재설정
|
||||
whyTOTPOnlyRenew: 보안 키가 등록되어 있는 상태에서 인증 앱 설정을 해제할 수 없습니다.
|
||||
renewTOTP: 인증 앱을 재설정
|
||||
tapSecurityKey: 브라우저의 지시에 따라 보안 키나 패스 키를 등록하십시오
|
||||
_permissions:
|
||||
"read:account": "계정의 정보를 봅니다"
|
||||
|
|
|
@ -1677,18 +1677,12 @@ _2fa:
|
|||
step3: Oppgi en engangskode for å fullføre oppsettet.
|
||||
step1: Først, installer en app for engangskoder (slik som {a} eller {b}) på en enhet.
|
||||
step3Title: Skriv inn en autentiseringskode
|
||||
renewTOTPCancel: Avbryt
|
||||
securityKeyName: Oppgi et nøkkelnavn
|
||||
renewTOTPOk: Rekonfigurer
|
||||
registerSecurityKey: Registrer en sikkerhetsnøkkel
|
||||
step2: Deretter kan du scanne QR-koden som vises på skjermen.
|
||||
registerTOTP: Registrer engangskode-app
|
||||
removeKeyConfirm: Sikker på at du vil slette nøkkelen {name}?
|
||||
registerTOTPBeforeKey: Sett opp en autentiserings-app for å registrere en sikkerhetsnøkkel.
|
||||
chromePasskeyNotSupported: Passkeys i Chrome er foreløpig ikke støttet.
|
||||
renewTOTPConfirm: Dette vil føre til at kodene fra den forrige appen din vil slutte
|
||||
å virke
|
||||
renewTOTP: Rekonfigurer autentiserings-app
|
||||
securityKeyNotSupported: Nettleseren din tillater ikke sikkerhetsnøkler.
|
||||
step2Click: Når du klikker på QR-koden kan du registrere den som en tofaktor-pålogging
|
||||
på en sikkerhetsnøkkel eller engangskode-app.
|
||||
|
|
|
@ -1286,17 +1286,8 @@ _2fa:
|
|||
removeKey: Удалить ключ безопасности
|
||||
step2Click: Нажав на этот QR-код, вы сможете зарегистрировать 2FA в вашем ключе
|
||||
безопасности или приложении-аутентификаторе для телефона.
|
||||
registerTOTPBeforeKey: Пожалуйста, настройте приложение-аутентификатор, чтобы зарегистрировать
|
||||
ключ безопасности или пароль.
|
||||
chromePasskeyNotSupported: Пароли Chrome пока не поддерживаются.
|
||||
renewTOTP: Перенастроить приложение-аутентификатор
|
||||
renewTOTPConfirm: Это приведет к тому, что коды подтверждения из предыдущего приложения
|
||||
перестанут работать
|
||||
renewTOTPOk: Перенастроить
|
||||
renewTOTPCancel: Отменить
|
||||
token: 2FA Токен
|
||||
whyTOTPOnlyRenew: Приложение аутентификатора нельзя удалить, пока зарегистрирован
|
||||
ключ безопасности.
|
||||
tapSecurityKey: Пожалуйста, следуйте инструкциям вашего браузера, чтобы зарегистрировать
|
||||
ключ безопасности или ключ-пароль
|
||||
step3Title: Введите код аутентификации
|
||||
|
|
|
@ -1325,18 +1325,13 @@ noGraze: Firefish ile çakıştığı için lütfen "Graze for Mastodon" tarayı
|
|||
devre dışı bırakın.
|
||||
isBot: Bu hesap bir bottur
|
||||
_2fa:
|
||||
renewTOTPOk: Yeniden Yapılandır
|
||||
registerTOTP: Doğrulayıcı uygulamasını kaydedin
|
||||
renewTOTPCancel: İptal Et
|
||||
renewTOTPConfirm: Bu, önceki uygulamanızdaki doğrulama kodlarının çalışmamasına
|
||||
neden olur
|
||||
alreadyRegistered: Zaten bir 2 faktörlü kimlik doğrulama cihazını kaydettiniz.
|
||||
chromePasskeyNotSupported: Chrome geçiş anahtarları şu anda desteklenmemektedir.
|
||||
registerSecurityKey: Bir güvenlik veya geçiş anahtarı kaydedin
|
||||
securityKeyName: Bir anahtar adı girin
|
||||
removeKey: Güvenlik anahtarını kaldır
|
||||
removeKeyConfirm: '{name} anahtarı gerçekten silinsin mi?'
|
||||
renewTOTP: Kimlik doğrulayıcı uygulamasını yeniden yapılandırın
|
||||
token: 2FA Tokeni
|
||||
step1: Öncelikle, cihazınıza bir kimlik doğrulama uygulaması ({a} veya {b} gibi)
|
||||
yükleyin.
|
||||
|
@ -1354,10 +1349,6 @@ _2fa:
|
|||
aracılığıyla kimlik doğrulama ayarlayabilirsiniz.
|
||||
tapSecurityKey: Güvenlik veya geçiş anahtarını kaydetmek için lütfen tarayıcınızı
|
||||
takip edin
|
||||
registerTOTPBeforeKey: Bir güvenlik veya geçiş anahtarı kaydetmek için lütfen bir
|
||||
kimlik doğrulama uygulaması kurun.
|
||||
whyTOTPOnlyRenew: Kimlik doğrulayıcı uygulaması, bir güvenlik anahtarı kaydedildiği
|
||||
sürece kaldırılamaz.
|
||||
_poll:
|
||||
voted: Oylandı
|
||||
deadlineTime: Zaman
|
||||
|
|
|
@ -1104,7 +1104,6 @@ _2fa:
|
|||
апаратний ключ безпеки або ключ-пароль
|
||||
securityKeyName: Введіть назву ключа
|
||||
chromePasskeyNotSupported: Паролі Chrome наразі не підтримуються.
|
||||
renewTOTPOk: Переналаштувати
|
||||
removeKey: Видалити ключ безпеки
|
||||
alreadyRegistered: 2FA вже налаштовано.
|
||||
step2Click: Натиснувши на цей QR-код, ви зможете зареєструвати 2FA у вашому ключі
|
||||
|
@ -1117,15 +1116,7 @@ _2fa:
|
|||
можете налаштувати автентифікацію за допомогою апаратних ключів безпеки, які підтримують
|
||||
FIDO2, щоб додатково захистити свій обліковий запис.
|
||||
removeKeyConfirm: Дійсно видалити ключ {name}?
|
||||
whyTOTPOnlyRenew: Додаток автентифікатора не можна видалити, доки зареєстровано
|
||||
ключ безпеки.
|
||||
renewTOTP: Переналаштувати додаток-автентифікатор
|
||||
renewTOTPCancel: Скасувати
|
||||
renewTOTPConfirm: Це призведе до того, що коди підтвердження з попереднього додатку
|
||||
перестануть працювати
|
||||
token: 2FA Токен
|
||||
registerTOTPBeforeKey: Будь ласка, налаштуйте додаток-автентифікатор, щоб зареєструвати
|
||||
ключ безпеки або пароль.
|
||||
step2Url: 'Також, ви можете ввести цю URL-адресу, якщо використовуєте десктопну
|
||||
програму:'
|
||||
step3: Введіть токен, наданий вашим додатком, щоб завершити налаштування.
|
||||
|
|
|
@ -1342,24 +1342,16 @@ _2fa:
|
|||
securityKeyInfo: "Bên cạnh xác minh bằng vân tay hoặc mã PIN, bạn cũng có thể thiết
|
||||
lập xác minh thông qua khóa bảo mật phần cứng hỗ trợ FIDO2 để bảo mật hơn nữa
|
||||
cho tài khoản của mình."
|
||||
registerTOTPBeforeKey: Vui lòng thiết lập một ứng dụng xác thực để đăng ký khóa
|
||||
bảo mật hoặc mật khẩu.
|
||||
tapSecurityKey: Vui lòng theo dõi trình duyệt của bạn để đăng ký mã bảo mật hoặc
|
||||
mã khóa
|
||||
renewTOTPConfirm: Điều này sẽ khiến mã xác minh từ ứng dụng trước của bạn ngừng
|
||||
hoạt động
|
||||
securityKeyName: Nhập tên mã khóa
|
||||
step3Title: Nhập mã xác thực
|
||||
chromePasskeyNotSupported: Mật khẩu Chrome hiện không được hỗ trợ.
|
||||
removeKeyConfirm: Thực sự xóa khóa {name}?
|
||||
whyTOTPOnlyRenew: Không thể xóa ứng dụng xác thực miễn là đã đăng ký khóa bảo mật.
|
||||
renewTOTPOk: Cấu hình lại
|
||||
renewTOTPCancel: Hủy bỏ
|
||||
removeKey: Xóa khóa bảo mật
|
||||
step2Click: Nhấn vào mã QR này sẽ cho phép bạn đăng ký 2FA cho khóa bảo mật hoặc
|
||||
ứng dụng xác thực điện thoại của bạn.
|
||||
securityKeyNotSupported: Trình duyệt của bạn không hỗ trợ khóa bảo mật.
|
||||
renewTOTP: Định cấu hình lại ứng dụng xác thực
|
||||
token: 2FA Token
|
||||
_permissions:
|
||||
"read:account": "Xem thông tin tài khoản của bạn"
|
||||
|
|
|
@ -1258,12 +1258,7 @@ _2fa:
|
|||
step3: "输入您的应用提供的令牌以完成设置。"
|
||||
step4: "从现在开始,任何登录操作都将要求您提供这样一个登录令牌。"
|
||||
securityKeyInfo: "除了指纹或 PIN 身份验证外,您还可以通过支持 FIDO2 的硬件安全密钥设置身份验证,以进一步保护您的账号。"
|
||||
renewTOTPOk: 重新配置
|
||||
renewTOTPCancel: 取消
|
||||
token: 2FA 令牌
|
||||
renewTOTP: 重新配置身份验证器应用
|
||||
registerTOTPBeforeKey: 请先设置认证器应用以注册安全或通行密钥。
|
||||
renewTOTPConfirm: 这将导致您之前应用中的验证码失效
|
||||
step3Title: 输入验证码
|
||||
step2Click: 点击此二维码将允许您在安全密钥或手机身份验证器应用中注册 2FA。
|
||||
securityKeyNotSupported: 您的浏览器不支持安全密钥。
|
||||
|
@ -1272,7 +1267,6 @@ _2fa:
|
|||
tapSecurityKey: 请按照您的浏览器的指示注册安全或通行密钥
|
||||
removeKey: 移除安全密钥
|
||||
removeKeyConfirm: 真的要删除 {name} 密钥吗?
|
||||
whyTOTPOnlyRenew: 只要注册了安全密钥,就无法删除身份验证器应用。
|
||||
_permissions:
|
||||
"read:account": "查看账号信息"
|
||||
"write:account": "更改账号信息"
|
||||
|
|
|
@ -1254,18 +1254,12 @@ _2fa:
|
|||
step3: "輸入您的App提供的權杖以完成設定。"
|
||||
step4: "從現在開始,任何登入操作都將要求您提供權杖。"
|
||||
securityKeyInfo: "您可以設定使用支援FIDO2的硬體安全鎖、終端設備的指纹認證或者PIN碼來登入。"
|
||||
renewTOTPCancel: 取消
|
||||
removeKey: 移除安全金鑰
|
||||
removeKeyConfirm: 真的要刪掉 {name} 嗎?
|
||||
renewTOTP: 重新配置身份驗證器應用程式
|
||||
chromePasskeyNotSupported: 目前不支持 Chrome 密鑰。
|
||||
whyTOTPOnlyRenew: 只要註冊了安全金鑰,就無法刪除身份驗證器應用程式。
|
||||
renewTOTPConfirm: 這將導致您之前的身分驗證器應用程式停止工作
|
||||
securityKeyName: 取一個金鑰的名字
|
||||
tapSecurityKey: 請按照您的瀏覽器註冊安全金鑰或密碼
|
||||
token: 兩步驟驗證金鑰
|
||||
registerTOTPBeforeKey: 請設置身份驗證器應用程式以註冊安全金鑰或密碼。
|
||||
renewTOTPOk: 重新配置
|
||||
step3Title: 輸入驗證碼
|
||||
securityKeyNotSupported: 您使用的瀏覧器不支援安全金鑰(Security key)。
|
||||
step2Click: 點擊此二維條碼以註冊2FA至你的安全密鑰或手機的Authenticator應用程式。
|
||||
|
|
|
@ -526,11 +526,9 @@ export const UserRepository = db.getRepository(User).extend({
|
|||
ffVisibility: profile!.ffVisibility,
|
||||
twoFactorEnabled: profile!.twoFactorEnabled,
|
||||
usePasswordLessLogin: profile!.usePasswordLessLogin,
|
||||
securityKeys: profile!.twoFactorEnabled
|
||||
? UserSecurityKeys.countBy({
|
||||
userId: user.id,
|
||||
}).then((result) => result >= 1)
|
||||
: false,
|
||||
securityKeys: UserSecurityKeys.countBy({
|
||||
userId: user.id,
|
||||
}).then((result) => result >= 1),
|
||||
}
|
||||
: {}),
|
||||
|
||||
|
@ -576,18 +574,16 @@ export const UserRepository = db.getRepository(User).extend({
|
|||
? {
|
||||
email: profile!.email,
|
||||
emailVerified: profile!.emailVerified,
|
||||
securityKeysList: profile!.twoFactorEnabled
|
||||
? UserSecurityKeys.find({
|
||||
where: {
|
||||
userId: user.id,
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
name: true,
|
||||
lastUsed: true,
|
||||
},
|
||||
})
|
||||
: [],
|
||||
securityKeysList: UserSecurityKeys.find({
|
||||
where: {
|
||||
userId: user.id,
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
name: true,
|
||||
lastUsed: true,
|
||||
},
|
||||
}),
|
||||
}
|
||||
: {}),
|
||||
|
||||
|
|
|
@ -47,10 +47,6 @@ export default define(meta, paramDef, async (ps, user) => {
|
|||
throw new Error("incorrect password");
|
||||
}
|
||||
|
||||
if (!profile.twoFactorEnabled) {
|
||||
throw new Error("2fa not enabled");
|
||||
}
|
||||
|
||||
const clientData = JSON.parse(ps.clientDataJSON);
|
||||
|
||||
if (clientData.type !== "webauthn.create") {
|
||||
|
@ -148,6 +144,8 @@ export default define(meta, paramDef, async (ps, user) => {
|
|||
}),
|
||||
);
|
||||
|
||||
UserProfiles.update(user.id, { securityKeysAvailable: true });
|
||||
|
||||
return {
|
||||
id: credentialIdString,
|
||||
name: ps.name,
|
||||
|
|
|
@ -32,10 +32,6 @@ export default define(meta, paramDef, async (ps, user) => {
|
|||
throw new Error("incorrect password");
|
||||
}
|
||||
|
||||
// if (!profile.twoFactorEnabled) {
|
||||
// throw new Error("2fa not enabled");
|
||||
// }
|
||||
|
||||
// 32 byte challenge
|
||||
const entropy = await randomBytes(32);
|
||||
const challenge = entropy
|
||||
|
|
|
@ -47,8 +47,9 @@ export default define(meta, paramDef, async (ps, user) => {
|
|||
});
|
||||
|
||||
if (keyCount === 0) {
|
||||
await UserProfiles.update(me.id, {
|
||||
await UserProfiles.update(user.id, {
|
||||
usePasswordLessLogin: false,
|
||||
securityKeysAvailable: false,
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -116,7 +116,7 @@ export default async (ctx: Koa.Context) => {
|
|||
);
|
||||
}
|
||||
|
||||
if (!profile.twoFactorEnabled) {
|
||||
if (!profile.twoFactorEnabled && !profile.securityKeysAvailable) {
|
||||
if (same) {
|
||||
signin(ctx, user);
|
||||
return;
|
||||
|
@ -128,7 +128,7 @@ export default async (ctx: Koa.Context) => {
|
|||
}
|
||||
}
|
||||
|
||||
if (token) {
|
||||
if (token && profile.twoFactorEnabled) {
|
||||
if (!same) {
|
||||
await fail(403, {
|
||||
id: "932c904e-9460-45b7-9ce6-7ed33be7eb2c",
|
||||
|
|
|
@ -79,10 +79,16 @@
|
|||
{{ i18n.ts.retry }}
|
||||
</MkButton>
|
||||
</div>
|
||||
<div v-if="user && user.securityKeys" class="or-hr">
|
||||
<div
|
||||
v-if="user && user.securityKeys && user.twoFactorEnabled"
|
||||
class="or-hr"
|
||||
>
|
||||
<p class="or-msg">{{ i18n.ts.or }}</p>
|
||||
</div>
|
||||
<div class="twofa-group totp-group">
|
||||
<div
|
||||
v-if="user.twoFactorEnabled"
|
||||
class="twofa-group totp-group"
|
||||
>
|
||||
<p style="margin-bottom: 0">
|
||||
{{ i18n.ts.twoStepAuthentication }}
|
||||
</p>
|
||||
|
@ -247,25 +253,23 @@ function queryKey() {
|
|||
function onSubmit() {
|
||||
signing.value = true;
|
||||
console.log("submit");
|
||||
if (!totpLogin.value && user.value && user.value.twoFactorEnabled) {
|
||||
if (window.PublicKeyCredential && user.value.securityKeys) {
|
||||
os.api("signin", {
|
||||
username: username.value,
|
||||
password: password.value,
|
||||
"hcaptcha-response": hCaptchaResponse.value,
|
||||
"g-recaptcha-response": reCaptchaResponse.value,
|
||||
if (window.PublicKeyCredential && user.value.securityKeys) {
|
||||
os.api("signin", {
|
||||
username: username.value,
|
||||
password: password.value,
|
||||
"hcaptcha-response": hCaptchaResponse.value,
|
||||
"g-recaptcha-response": reCaptchaResponse.value,
|
||||
})
|
||||
.then((res) => {
|
||||
totpLogin.value = true;
|
||||
signing.value = false;
|
||||
challengeData.value = res;
|
||||
return queryKey();
|
||||
})
|
||||
.then((res) => {
|
||||
totpLogin.value = true;
|
||||
signing.value = false;
|
||||
challengeData.value = res;
|
||||
return queryKey();
|
||||
})
|
||||
.catch(loginFailed);
|
||||
} else {
|
||||
totpLogin.value = true;
|
||||
signing.value = false;
|
||||
}
|
||||
.catch(loginFailed);
|
||||
} else if (!totpLogin.value && user.value && user.value.twoFactorEnabled) {
|
||||
totpLogin.value = true;
|
||||
signing.value = false;
|
||||
} else {
|
||||
os.api("signin", {
|
||||
username: username.value,
|
||||
|
|
|
@ -14,17 +14,7 @@
|
|||
<template #caption>{{ i18n.ts.totpDescription }}</template>
|
||||
<div v-if="$i.twoFactorEnabled" class="_gaps_s">
|
||||
<div v-text="i18n.ts._2fa.alreadyRegistered" />
|
||||
<template v-if="$i.securityKeysList.length > 0">
|
||||
<MkButton @click="renewTOTP"
|
||||
><i
|
||||
:class="icon('ph-shield-check')"
|
||||
style="margin-right: 0.5rem"
|
||||
></i
|
||||
>{{ i18n.ts._2fa.renewTOTP }}</MkButton
|
||||
>
|
||||
<MkInfo>{{ i18n.ts._2fa.whyTOTPOnlyRenew }}</MkInfo>
|
||||
</template>
|
||||
<MkButton v-else @click="unregisterTOTP"
|
||||
<MkButton @click="unregisterTOTP"
|
||||
><i
|
||||
:class="icon('ph-shield-slash')"
|
||||
style="margin-right: 0.5rem"
|
||||
|
@ -56,13 +46,6 @@
|
|||
{{ i18n.ts._2fa.securityKeyNotSupported }}
|
||||
</MkInfo>
|
||||
|
||||
<MkInfo
|
||||
v-else-if="supportsCredentials && !$i.twoFactorEnabled"
|
||||
warn
|
||||
>
|
||||
{{ i18n.ts._2fa.registerTOTPBeforeKey }}
|
||||
</MkInfo>
|
||||
|
||||
<template v-else>
|
||||
<MkButton primary @click="addSecurityKey"
|
||||
><i
|
||||
|
@ -202,19 +185,6 @@ function unregisterTOTP() {
|
|||
});
|
||||
}
|
||||
|
||||
function renewTOTP() {
|
||||
os.confirm({
|
||||
type: "question",
|
||||
title: i18n.ts._2fa.renewTOTP,
|
||||
text: i18n.ts._2fa.renewTOTPConfirm,
|
||||
okText: i18n.ts._2fa.renewTOTPOk,
|
||||
cancelText: i18n.ts._2fa.renewTOTPCancel,
|
||||
}).then(({ canceled }) => {
|
||||
if (canceled) return;
|
||||
registerTOTP();
|
||||
});
|
||||
}
|
||||
|
||||
async function unregisterKey(key) {
|
||||
const confirm = await os.confirm({
|
||||
type: "question",
|
||||
|
|
Loading…
Reference in a new issue