Two-Factor Check
␊ +- ␊
+
- Having trouble? ␊ +
- Use a recovery key ␊ +
- ␊
+
- Lose your recovery keys? ␊ +
- Request account recovery ␊ +
diff --git a/template/config/phrases.js b/template/config/phrases.js index 689720dd..77d24c88 100644 --- a/template/config/phrases.js +++ b/template/config/phrases.js @@ -14,6 +14,7 @@ module.exports = { INVALID_PASSWORD_STRENGTH: 'Password strength was not strong enough.', INVALID_PROVIDER: 'We do not support this authentication provider.', INVALID_RECOVERY_PASSCODE: 'Invalid recovery passcode.', + INVALID_RECOVERY_KEY: 'Invalid recovery key.', INVALID_RESET_PASSWORD: 'Reset token and email were not valid together.', INVALID_RESET_TOKEN: 'Reset token provided was invalid.', INVALID_SESSION_SECRET: 'Invalid session secret.', diff --git a/template/locales/ar.json b/template/locales/ar.json index cea0931e..9fa61a39 100644 --- a/template/locales/ar.json +++ b/template/locales/ar.json @@ -168,5 +168,47 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Dashboard | Lad": "Dashboard | Lad", + "Access your Lad account dashboard": "Access your Lad account dashboard", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Continue": "Continue", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Dashboard": "Dashboard", + "My Account": "My Account", + "Profile": "Profile", + "Security": "Security", + "Log out": "Log out", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/locales/cs.json b/template/locales/cs.json index cea0931e..9fa61a39 100644 --- a/template/locales/cs.json +++ b/template/locales/cs.json @@ -168,5 +168,47 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Dashboard | Lad": "Dashboard | Lad", + "Access your Lad account dashboard": "Access your Lad account dashboard", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Continue": "Continue", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Dashboard": "Dashboard", + "My Account": "My Account", + "Profile": "Profile", + "Security": "Security", + "Log out": "Log out", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/locales/da.json b/template/locales/da.json index cea0931e..9fa61a39 100644 --- a/template/locales/da.json +++ b/template/locales/da.json @@ -168,5 +168,47 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Dashboard | Lad": "Dashboard | Lad", + "Access your Lad account dashboard": "Access your Lad account dashboard", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Continue": "Continue", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Dashboard": "Dashboard", + "My Account": "My Account", + "Profile": "Profile", + "Security": "Security", + "Log out": "Log out", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/locales/de.json b/template/locales/de.json index cea0931e..9fa61a39 100644 --- a/template/locales/de.json +++ b/template/locales/de.json @@ -168,5 +168,47 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Dashboard | Lad": "Dashboard | Lad", + "Access your Lad account dashboard": "Access your Lad account dashboard", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Continue": "Continue", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Dashboard": "Dashboard", + "My Account": "My Account", + "Profile": "Profile", + "Security": "Security", + "Log out": "Log out", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/locales/en.json b/template/locales/en.json index 23c4e0e1..2e9277e4 100644 --- a/template/locales/en.json +++ b/template/locales/en.json @@ -201,5 +201,39 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/locales/es.json b/template/locales/es.json index 23c4e0e1..2e9277e4 100644 --- a/template/locales/es.json +++ b/template/locales/es.json @@ -201,5 +201,39 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/locales/fi.json b/template/locales/fi.json index cea0931e..9fa61a39 100644 --- a/template/locales/fi.json +++ b/template/locales/fi.json @@ -168,5 +168,47 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Dashboard | Lad": "Dashboard | Lad", + "Access your Lad account dashboard": "Access your Lad account dashboard", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Continue": "Continue", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Dashboard": "Dashboard", + "My Account": "My Account", + "Profile": "Profile", + "Security": "Security", + "Log out": "Log out", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/locales/fr.json b/template/locales/fr.json index cea0931e..9fa61a39 100644 --- a/template/locales/fr.json +++ b/template/locales/fr.json @@ -168,5 +168,47 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Dashboard | Lad": "Dashboard | Lad", + "Access your Lad account dashboard": "Access your Lad account dashboard", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Continue": "Continue", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Dashboard": "Dashboard", + "My Account": "My Account", + "Profile": "Profile", + "Security": "Security", + "Log out": "Log out", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/locales/he.json b/template/locales/he.json index cea0931e..9fa61a39 100644 --- a/template/locales/he.json +++ b/template/locales/he.json @@ -168,5 +168,47 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Dashboard | Lad": "Dashboard | Lad", + "Access your Lad account dashboard": "Access your Lad account dashboard", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Continue": "Continue", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Dashboard": "Dashboard", + "My Account": "My Account", + "Profile": "Profile", + "Security": "Security", + "Log out": "Log out", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/locales/hu.json b/template/locales/hu.json index cea0931e..9fa61a39 100644 --- a/template/locales/hu.json +++ b/template/locales/hu.json @@ -168,5 +168,47 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Dashboard | Lad": "Dashboard | Lad", + "Access your Lad account dashboard": "Access your Lad account dashboard", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Continue": "Continue", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Dashboard": "Dashboard", + "My Account": "My Account", + "Profile": "Profile", + "Security": "Security", + "Log out": "Log out", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/locales/id.json b/template/locales/id.json index cea0931e..9fa61a39 100644 --- a/template/locales/id.json +++ b/template/locales/id.json @@ -168,5 +168,47 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Dashboard | Lad": "Dashboard | Lad", + "Access your Lad account dashboard": "Access your Lad account dashboard", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Continue": "Continue", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Dashboard": "Dashboard", + "My Account": "My Account", + "Profile": "Profile", + "Security": "Security", + "Log out": "Log out", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/locales/it.json b/template/locales/it.json index cea0931e..9fa61a39 100644 --- a/template/locales/it.json +++ b/template/locales/it.json @@ -168,5 +168,47 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Dashboard | Lad": "Dashboard | Lad", + "Access your Lad account dashboard": "Access your Lad account dashboard", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Continue": "Continue", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Dashboard": "Dashboard", + "My Account": "My Account", + "Profile": "Profile", + "Security": "Security", + "Log out": "Log out", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/locales/ja.json b/template/locales/ja.json index cea0931e..9fa61a39 100644 --- a/template/locales/ja.json +++ b/template/locales/ja.json @@ -168,5 +168,47 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Dashboard | Lad": "Dashboard | Lad", + "Access your Lad account dashboard": "Access your Lad account dashboard", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Continue": "Continue", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Dashboard": "Dashboard", + "My Account": "My Account", + "Profile": "Profile", + "Security": "Security", + "Log out": "Log out", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/locales/ko.json b/template/locales/ko.json index cea0931e..9fa61a39 100644 --- a/template/locales/ko.json +++ b/template/locales/ko.json @@ -168,5 +168,47 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Dashboard | Lad": "Dashboard | Lad", + "Access your Lad account dashboard": "Access your Lad account dashboard", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Continue": "Continue", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Dashboard": "Dashboard", + "My Account": "My Account", + "Profile": "Profile", + "Security": "Security", + "Log out": "Log out", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/locales/nl.json b/template/locales/nl.json index cea0931e..9fa61a39 100644 --- a/template/locales/nl.json +++ b/template/locales/nl.json @@ -168,5 +168,47 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Dashboard | Lad": "Dashboard | Lad", + "Access your Lad account dashboard": "Access your Lad account dashboard", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Continue": "Continue", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Dashboard": "Dashboard", + "My Account": "My Account", + "Profile": "Profile", + "Security": "Security", + "Log out": "Log out", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/locales/no.json b/template/locales/no.json index cea0931e..9fa61a39 100644 --- a/template/locales/no.json +++ b/template/locales/no.json @@ -168,5 +168,47 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Dashboard | Lad": "Dashboard | Lad", + "Access your Lad account dashboard": "Access your Lad account dashboard", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Continue": "Continue", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Dashboard": "Dashboard", + "My Account": "My Account", + "Profile": "Profile", + "Security": "Security", + "Log out": "Log out", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/locales/pl.json b/template/locales/pl.json index cea0931e..9fa61a39 100644 --- a/template/locales/pl.json +++ b/template/locales/pl.json @@ -168,5 +168,47 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Dashboard | Lad": "Dashboard | Lad", + "Access your Lad account dashboard": "Access your Lad account dashboard", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Continue": "Continue", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Dashboard": "Dashboard", + "My Account": "My Account", + "Profile": "Profile", + "Security": "Security", + "Log out": "Log out", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/locales/pt.json b/template/locales/pt.json index cea0931e..9fa61a39 100644 --- a/template/locales/pt.json +++ b/template/locales/pt.json @@ -168,5 +168,47 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Dashboard | Lad": "Dashboard | Lad", + "Access your Lad account dashboard": "Access your Lad account dashboard", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Continue": "Continue", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Dashboard": "Dashboard", + "My Account": "My Account", + "Profile": "Profile", + "Security": "Security", + "Log out": "Log out", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/locales/ru.json b/template/locales/ru.json index cea0931e..9fa61a39 100644 --- a/template/locales/ru.json +++ b/template/locales/ru.json @@ -168,5 +168,47 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Dashboard | Lad": "Dashboard | Lad", + "Access your Lad account dashboard": "Access your Lad account dashboard", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Continue": "Continue", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Dashboard": "Dashboard", + "My Account": "My Account", + "Profile": "Profile", + "Security": "Security", + "Log out": "Log out", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/locales/sv.json b/template/locales/sv.json index cea0931e..9fa61a39 100644 --- a/template/locales/sv.json +++ b/template/locales/sv.json @@ -168,5 +168,47 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Dashboard | Lad": "Dashboard | Lad", + "Access your Lad account dashboard": "Access your Lad account dashboard", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Continue": "Continue", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Dashboard": "Dashboard", + "My Account": "My Account", + "Profile": "Profile", + "Security": "Security", + "Log out": "Log out", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/locales/th.json b/template/locales/th.json index cea0931e..9fa61a39 100644 --- a/template/locales/th.json +++ b/template/locales/th.json @@ -168,5 +168,47 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Dashboard | Lad": "Dashboard | Lad", + "Access your Lad account dashboard": "Access your Lad account dashboard", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Continue": "Continue", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Dashboard": "Dashboard", + "My Account": "My Account", + "Profile": "Profile", + "Security": "Security", + "Log out": "Log out", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/locales/tr.json b/template/locales/tr.json index cea0931e..9fa61a39 100644 --- a/template/locales/tr.json +++ b/template/locales/tr.json @@ -168,5 +168,47 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Dashboard | Lad": "Dashboard | Lad", + "Access your Lad account dashboard": "Access your Lad account dashboard", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Continue": "Continue", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Dashboard": "Dashboard", + "My Account": "My Account", + "Profile": "Profile", + "Security": "Security", + "Log out": "Log out", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/locales/uk.json b/template/locales/uk.json index cea0931e..9fa61a39 100644 --- a/template/locales/uk.json +++ b/template/locales/uk.json @@ -168,5 +168,47 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Dashboard | Lad": "Dashboard | Lad", + "Access your Lad account dashboard": "Access your Lad account dashboard", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Continue": "Continue", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Dashboard": "Dashboard", + "My Account": "My Account", + "Profile": "Profile", + "Security": "Security", + "Log out": "Log out", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/locales/vi.json b/template/locales/vi.json index cea0931e..9fa61a39 100644 --- a/template/locales/vi.json +++ b/template/locales/vi.json @@ -168,5 +168,47 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Dashboard | Lad": "Dashboard | Lad", + "Access your Lad account dashboard": "Access your Lad account dashboard", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Continue": "Continue", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Dashboard": "Dashboard", + "My Account": "My Account", + "Profile": "Profile", + "Security": "Security", + "Log out": "Log out", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/locales/zh.json b/template/locales/zh.json index 23c4e0e1..2e9277e4 100644 --- a/template/locales/zh.json +++ b/template/locales/zh.json @@ -201,5 +201,39 @@ "Privacy Policy | Lad": "Privacy Policy | Lad", "Read our privacy policy": "Read our privacy policy", "Support | Lad": "Support | Lad", - "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments" + "Ask Lad your questions or leave comments": "Ask Lad your questions or leave comments", + "Two Factor Auth | Lad": "Two Factor Auth | Lad", + "Authenticate yourself with optional OTP to log in": "Authenticate yourself with optional OTP to log in", + "Please log in to view the page you requested.": "Please log in to view the page you requested.", + "Account Recovery": "Account Recovery", + "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.": "If you can't access your authenticator app or lose your recovery keys, then you can submit a request for your account to be unlocked.", + "Verify access to your email address with a code emailed to you.": "Verify access to your email address with a code emailed to you.", + "Wait 3-5 business days for an administrative follow-up email.": "Wait 3-5 business days for an administrative follow-up email.", + "Access to your account will be unlocked for you.": "Access to your account will be unlocked for you.", + "Two-Factor Check": "Two-Factor Check", + "Passcode": "Passcode", + "Don't ask me again in this browser": "Don't ask me again in this browser", + "Having trouble?": "Having trouble?", + "Use a recovery key": "Use a recovery key", + "Lose your recovery keys?": "Lose your recovery keys?", + "Request account recovery": "Request account recovery", + "Invalid two-factor authentication passcode.": "Invalid two-factor authentication passcode.", + "Setup OTP": "Setup OTP", + "Download your emergency recovery keys below.": "Download your emergency recovery keys below.", + "Download": "Download", + "Recommended Authenticator Apps": "Recommended Authenticator Apps", + "App": "App", + "Open-Source": "Open-Source", + "Google Play": "Google Play", + "App Store": "App Store", + "F-Droid": "F-Droid", + "Step 1: Install and open an authenticator app.": "Step 1: Install and open an authenticator app.", + "Step 2: Scan this QR code and enter its generated token:": "Step 2: Scan this QR code and enter its generated token:", + "Can’t scan the QR code? Configure with this code": "Can’t scan the QR code? Configure with this code", + "Complete Setup": "Complete Setup", + "Confirm Password": "Confirm Password", + "Recovery Key": "Recovery Key", + "Recovery passcode successful. This passcode will no longer be valid.": "Recovery passcode successful. This passcode will no longer be valid.", + "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.": "You have run out of recovery keys. Please download the newly generated recovery keys before continuing.", + "Invalid recovery key.": "Invalid recovery key." } \ No newline at end of file diff --git a/template/test/_utils.js b/template/test/_utils.js index 06b3f8cb..45354ee0 100644 --- a/template/test/_utils.js +++ b/template/test/_utils.js @@ -4,22 +4,22 @@ const MongodbMemoryServer = require('mongodb-memory-server').default; const mongoose = require('mongoose'); const request = require('supertest'); const sinon = require('sinon'); -const proxyquire = require('proxyquire').noPreserveCache(); -const { factory } = require('factory-girl'); +const proxyquire = require('proxyquire'); +const { factory, MongooseAdapter } = require('factory-girl'); // Models and server const config = require('../config'); -const api = require('../api'); const { Users } = require('../app/models'); -const web = require('../web'); const mongod = new MongodbMemoryServer(); +const adapter = new MongooseAdapter(); // create connection to mongoose before all tests exports.before = async () => { const uri = await mongod.getConnectionString(); await mongoose.connect(uri); + factory.setAdapter(adapter); factory.define('user', Users, { email: factory.sequence('Users.email', n => `test${n}@example.com`), password: '!@K#NLK!#N' @@ -28,6 +28,7 @@ exports.before = async () => { // create fixtures before each test exports.beforeEach = async t => { + // setup stubs for serializeUser and deserializeUser t.context.serialize = sinon.stub().returns(() => {}); t.context.deserialize = sinon.stub().returns(() => {}); proxyquire('../helpers/passport', { @@ -40,11 +41,13 @@ exports.beforeEach = async t => { } }); - t.context.web = await request.agent(web.server); - t.context.api = await request.agent(api.server); + t.context.web = await request.agent(require('../web').server); + t.context.api = await request.agent(require('../api').server); }; -exports.afterEach = async () => {}; +exports.afterEach = async () => { + sinon.restore(); +}; exports.after = async () => { mongoose.disconnect(); diff --git a/template/test/web/auth.js b/template/test/web/auth.js index ee72f0e3..bee9f38d 100644 --- a/template/test/web/auth.js +++ b/template/test/web/auth.js @@ -10,7 +10,7 @@ const phrases = require('../../config/phrases'); const config = require('../../config'); const { Users } = require('../../app/models'); -const { before, beforeEach, afterEach, after, login } = require('../_utils'); +const { before, beforeEach, afterEach, after } = require('../_utils'); test.before(before); test.after.always(after); diff --git a/template/test/web/otp.js b/template/test/web/otp.js new file mode 100644 index 00000000..ed24db12 --- /dev/null +++ b/template/test/web/otp.js @@ -0,0 +1,339 @@ +const test = require('ava'); +const sinon = require('sinon'); +const proxyquire = require('proxyquire'); +const { factory } = require('factory-girl'); + +const _ = require('lodash'); +const config = require('../../config'); +const phrases = require('../../config/phrases'); +const policies = require('../../helpers/policies'); +const passport = require('../../helpers/passport'); +const { authenticator } = require('otplib'); +const { Users } = require('../../app/models'); + +const { before, beforeEach, afterEach, after } = require('../_utils'); + +test.before(async t => { + // call setup + await before(t); + + // setup userOTP factory + factory.extend('user', 'userOTP', { + [config.userFields.otpRecoveryKeys]: ['1', '2'], + [config.passport.fields.otpToken]: '1', + [config.passport.fields.otpEnabled]: true, + [config.userFields.hasSetPassword]: true + }); + + // stub policies in routes/web/otp + t.context.ensureLoggedIn = sinon.stub(policies, 'ensureLoggedIn'); + proxyquire('../../routes/web', { + '../../helpers': { + policies + } + }); + t.context.user = await factory.build('userOTP'); + t.context.ensureLoggedIn.callsFake(async (ctx, next) => { + ctx.state.user = t.context.user; + return next(); + }); +}); +test.after.always(after); +test.beforeEach(async t => { + // save original environment variables so we can reset after test + t.context.originalEnv = _.cloneDeep(process.env); + + // set AUTH_OTP_ENABLED to true and reload web server + process.env.AUTH_OTP_ENABLED = 'true'; + + // call setup + await beforeEach(t); +}); +test.afterEach.always(async t => { + // reset environment variables + process.env = _.cloneDeep(t.context.originalEnv); + + // call teardown + await afterEach(t); +}); + +test('GET otp/login > successful', async t => { + // get test server + const { web } = t.context; + + // GET login page + const res = await web.get( + `/en${config.otpRoutePrefix}${config.otpRouteLoginPath}` + ); + + t.is(res.status, 200); + t.snapshot(res.text); +}); + +test('POST otp/login > successful', async t => { + // get test server + const { web } = t.context; + // setup stubs + t.context.authenticate = sinon + .stub(passport, 'authenticate') + .withArgs('otp') + .returns(() => {}); + proxyquire('../../app/controllers/web/auth', { + '../../../helpers/passport': t.context.authenticate + }); + t.context.authenticate.yields(null, true); + + // POST login page + const res = await web + .post(`/en${config.otpRoutePrefix}${config.otpRouteLoginPath}`) + .send({ + passcode: '1234 124', + otp_remember_me: 'true' + }); + + t.is(res.status, 200); + t.is(res.body.redirectTo, '/en/dashboard'); +}); + +test('POST otp/login > invalid OTP passcode', async t => { + // get test server + const { web } = t.context; + // setup stubs + t.context.authenticate = sinon + .stub(passport, 'authenticate') + .withArgs('otp') + .returns(() => {}); + proxyquire('../../app/controllers/web/auth', { + '../../../helpers/passport': t.context.authenticate + }); + t.context.authenticate.yields(null, false); + + // POST login page + const res = await web + .post(`/en${config.otpRoutePrefix}${config.otpRouteLoginPath}`) + .send({ + passcode: '1234 124', + otp_remember_me: 'true' + }); + + t.is(res.status, 401); + t.is(JSON.parse(res.text).message, phrases.INVALID_OTP_PASSCODE); +}); + +test('GET otp/setup > successful', async t => { + // get test server + const { web } = t.context; + + // GET setup page + const res = await web.get(`/en${config.otpRoutePrefix}/setup`); + + t.is(res.status, 200); + t.snapshot(res.text); +}); + +test('POST otp/setup > successful', async t => { + // get test server + const { web } = t.context; + // setup stubs + sinon.stub(Users.prototype, 'authenticate').returns({ user: true }); + + // POST setup page + const res = await web.post(`/en${config.otpRoutePrefix}/setup`).send({ + token: null, + password: '!@K#NLK!#N' + }); + + t.is(res.status, 200); + t.snapshot(res.text); +}); + +test('POST otp/setup > successful with token', async t => { + // get test server + const { web, user } = t.context; + // setup stubs + const verify = sinon.stub(authenticator, 'verify').returns(() => {}); + proxyquire('../../app/controllers/web/otp/setup', { + otplib: { + authenticator + } + }); + verify.returns(true); + + user[config.passport.fields.otpEnabled] = false; + + // POST setup page + const res = await web.post(`/en${config.otpRoutePrefix}/setup`).send({ + token: '1', + password: '!@K#NLK!#N' + }); + + t.is(res.status, 302); + t.is(res.header.location, '/en/my-account/security'); + t.is(user[config.passport.fields.otpEnabled], true); +}); + +test('POST otp/setup > invalid token', async t => { + // get test server + const { web } = t.context; + // setup stubs + const verify = sinon.stub(authenticator, 'verify').returns(() => {}); + proxyquire('../../app/controllers/web/otp/setup', { + otplib: { + authenticator + } + }); + verify.returns(false); + + // POST setup page + const res = await web.post(`/en${config.otpRoutePrefix}/setup`).send({ + token: '1', + password: '!@K#NLK!#N' + }); + + t.is(res.status, 200); + t.snapshot(res.text); +}); + +test('POST otp/setup > invalid blank password', async t => { + // get test server + const { web } = t.context; + + // POST setup page + const res = await web.post(`/en${config.otpRoutePrefix}/setup`).send({ + token: null, + password: null + }); + + t.is(res.status, 400); + t.is(JSON.parse(res.text).message, phrases.INVALID_PASSWORD); +}); + +test('POST otp/setup > incorrect password', async t => { + // get test server + const { web } = t.context; + + // POST setup page + const res = await web.post(`/en${config.otpRoutePrefix}/setup`).send({ + token: null, + password: 'test' + }); + + t.is(res.status, 400); + t.is(JSON.parse(res.text).message, phrases.INVALID_PASSWORD); +}); + +test('POST otp/disable > successful', async t => { + // get test server + const { web, user } = t.context; + // setup stubs + sinon.stub(Users.prototype, 'authenticate').returns({ user: true }); + + // POST disable page + const res = await web.post(`/en${config.otpRoutePrefix}/disable`).send({ + password: 'test' + }); + + t.is(res.status, 302); + t.is(res.header.location, '/en/my-account/security'); + + t.is(user[config.passport.fields.otpEnabled], false); +}); + +test('POST otp/disable > invalid blank password', async t => { + // get test server + const { web } = t.context; + + // POST disable page + const res = await web.post(`/en${config.otpRoutePrefix}/disable`).send({ + password: null + }); + + t.is(res.status, 400); + t.is(JSON.parse(res.text).message, phrases.INVALID_PASSWORD); +}); + +test('POST otp/disable > incorrect password', async t => { + // get test server + const { web } = t.context; + // setup stubs + sinon.stub(Users.prototype, 'authenticate').returns({ user: false }); + + // POST disable page + const res = await web.post(`/en${config.otpRoutePrefix}/disable`).send({ + password: 'test' + }); + + t.is(res.status, 400); + t.is(JSON.parse(res.text).message, phrases.INVALID_PASSWORD); +}); + +test('POST otp/recovery > successful', async t => { + // get test server + const { web } = t.context; + + // POST disable page + const res = await web.post(`/en${config.otpRoutePrefix}/recovery`); + + t.is(res.status, 302); + t.is(res.header.location, `/en${config.verifyRoute}`); +}); + +test('GET otp/keys > successful', async t => { + // get test server + const { web } = t.context; + + // GET key page + const res = await web.get(`/en${config.otpRoutePrefix}/keys`); + + t.is(res.status, 200); + t.snapshot(res.text); +}); + +test('POST otp/keys > successful', async t => { + // get test server + const { web, user } = t.context; + // setup stubs + user[config.userFields.otpRecoveryKeys] = ['1', '2']; + + // POST keys page + const res = await web + .post(`/en${config.otpRoutePrefix}/keys`) + .send({ recovery_key: '1' }); + + t.is(res.status, 302); + t.is( + res.header.location, + `/en${config.passportCallbackOptions.successReturnToOrRedirect}` + ); + t.falsy(user[config.userFields.otpRecoveryKeys].includes('1')); +}); + +test('POST otp/keys > invalid recovery key', async t => { + // get test server + const { web } = t.context; + + // POST keys page + const res = await web + .post(`/en${config.otpRoutePrefix}/keys`) + .send({ recovery_key: '1' }); + + t.log(res); + t.is(res.status, 400); + t.is(JSON.parse(res.text).message, phrases.INVALID_RECOVERY_KEY); +}); + +test('POST otp/keys > recovery keys reset', async t => { + // get test server + const { web, user } = t.context; + // setup stubs + user[config.userFields.otpRecoveryKeys] = ['1']; + + // POST keys page + const res = await web + .post(`/en${config.otpRoutePrefix}/keys`) + .send({ recovery_key: '1' }); + + t.is(res.status, 302); + t.is(res.header.location, '/en/my-account/security'); + t.true(user[config.userFields.otpRecoveryKeys] !== null); +}); diff --git a/template/test/web/snapshots/otp.js.md b/template/test/web/snapshots/otp.js.md new file mode 100644 index 00000000..6c5860c7 --- /dev/null +++ b/template/test/web/snapshots/otp.js.md @@ -0,0 +1,1342 @@ +# Snapshot report for `template/test/web/otp.js` + +The actual snapshot is saved in `otp.js.snap`. + +Generated by [AVA](https://ava.li). + +## GET otp/login > successful + +> Snapshot 1 + + `␊ + ␊ + ␊ +
␊ + ␊ + ␊ +