diff --git a/dashboard/package-lock.json b/dashboard/package-lock.json index 91477eb4a..72d0f1b40 100644 --- a/dashboard/package-lock.json +++ b/dashboard/package-lock.json @@ -6,7 +6,7 @@ "packages": { "": { "dependencies": { - "@cloudron/pankow": "^3.5.12", + "@cloudron/pankow": "^3.5.13", "@fontsource/inter": "^5.2.8", "@fortawesome/fontawesome-free": "^7.1.0", "@vitejs/plugin-vue": "^6.0.2", @@ -76,9 +76,9 @@ } }, "node_modules/@cloudron/pankow": { - "version": "3.5.12", - "resolved": "https://registry.npmjs.org/@cloudron/pankow/-/pankow-3.5.12.tgz", - "integrity": "sha512-x501HeBLIHq/uL2EQ9LjvrKIjctBZ49EasMcR79z/jZgACn8O8KaMpIvarfBCQHH+rZPgWLlGjqymzmOAEpt7Q==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@cloudron/pankow/-/pankow-3.5.13.tgz", + "integrity": "sha512-7f3rtPdb//yxnP1jNa4ieWDah36MK68dqvM/PfW/SPljKLFBz7JGEjp8eRY2/fCBD+OiUrGdi/dkaDR1eVe3tg==", "license": "ISC", "dependencies": { "@fontsource/inter": "^5.2.8", @@ -2667,9 +2667,9 @@ } }, "@cloudron/pankow": { - "version": "3.5.12", - "resolved": "https://registry.npmjs.org/@cloudron/pankow/-/pankow-3.5.12.tgz", - "integrity": "sha512-x501HeBLIHq/uL2EQ9LjvrKIjctBZ49EasMcR79z/jZgACn8O8KaMpIvarfBCQHH+rZPgWLlGjqymzmOAEpt7Q==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@cloudron/pankow/-/pankow-3.5.13.tgz", + "integrity": "sha512-7f3rtPdb//yxnP1jNa4ieWDah36MK68dqvM/PfW/SPljKLFBz7JGEjp8eRY2/fCBD+OiUrGdi/dkaDR1eVe3tg==", "requires": { "@fontsource/inter": "^5.2.8", "@fortawesome/fontawesome-free": "^7.1.0", diff --git a/dashboard/package.json b/dashboard/package.json index 6c1b66541..ed8528af9 100644 --- a/dashboard/package.json +++ b/dashboard/package.json @@ -7,7 +7,7 @@ }, "type": "module", "dependencies": { - "@cloudron/pankow": "^3.5.12", + "@cloudron/pankow": "^3.5.13", "@fontsource/inter": "^5.2.8", "@fortawesome/fontawesome-free": "^7.1.0", "@vitejs/plugin-vue": "^6.0.2", diff --git a/dashboard/public/translation/da.json b/dashboard/public/translation/da.json index ef4abdcf4..1343bf55b 100644 --- a/dashboard/public/translation/da.json +++ b/dashboard/public/translation/da.json @@ -240,7 +240,6 @@ "newPasswordRepeat": "Gentag ny adgangskode" }, "enable2FA": { - "description": "Din Cloudron-administrator har krævet, at alle medlemmer skal aktivere to-faktor-autentifikation. Du vil ikke kunne få adgang til instrumentbrættet, før du aktiverer 2FA.", "authenticatorAppDescription": "Brug Google Authenticator (Android, iOS), FreeOTP-autenticator (Android, iOS) eller en lignende TOTP-app til at scanne hemmeligheden.", "title": "Aktiver to-faktor-autentifikation", "token": "Token", diff --git a/dashboard/public/translation/de.json b/dashboard/public/translation/de.json index 8440944b4..cce5861cd 100644 --- a/dashboard/public/translation/de.json +++ b/dashboard/public/translation/de.json @@ -333,7 +333,6 @@ "enable": "Aktivieren", "token": "Token", "authenticatorAppDescription": "Bitte eines der folgenden Tools verwenden, um den Barcode zu scannen: Google Authenticator (Android, iOS), FreeOTP authenticator (Android, iOS). Vergleichbare TOTP Apps sollten auch funktionieren.", - "description": "Die Benutzung dieser Cloudron-Instanz verlangt von allen Usern eine Zwei-Faktor-Authentifizierung. Hinweis: 2FA aktivieren.", "title": "Aktiviere Zwei-Faktor-Authentifizierung" }, "primaryEmail": "Primäre E-Mail-Adresse", diff --git a/dashboard/public/translation/en.json b/dashboard/public/translation/en.json index ef0e73f8f..3de093976 100644 --- a/dashboard/public/translation/en.json +++ b/dashboard/public/translation/en.json @@ -258,7 +258,7 @@ }, "title": "Users", "2FAResetDialog": { - "title": "Reset 2FA", + "title": "Reset User 2FA", "description": "Remove the existing 2FA setup for user “{{ username }}”?" } }, @@ -281,10 +281,10 @@ }, "enable2FA": { "title": "Enable Two-Factor Authentication", - "description": "Your Cloudron Administrator has required all members to enable two-factor authentication. You will be unable to access the dashboard until you enable 2FA.", "authenticatorAppDescription": "Use Google Authenticator (Android, iOS), FreeOTP authenticator (Android, iOS) or a similar TOTP app to scan the secret.", "token": "Token", - "enable": "Enable" + "enable": "Enable", + "mandatorySetup": "2FA is required to access the dashboard. Please complete the setup to continue." }, "appPasswords": { "title": "App Passwords", diff --git a/dashboard/public/translation/es.json b/dashboard/public/translation/es.json index 6f357137d..e29266b9d 100644 --- a/dashboard/public/translation/es.json +++ b/dashboard/public/translation/es.json @@ -445,7 +445,6 @@ "enable": "Habilitar", "token": "Token", "authenticatorAppDescription": "Usar Google Authenticator (Android, iOS), FreeOTP authenticator (Android, iOS) o aplicación TOTP para escanear clave secreta.", - "description": "Tu administrador de Cloudron ha solicitado a todos los miembros que habiliten la autenticación de dos factores. No podrá acceder al panel hasta que habilite 2FA.", "title": "Habilitar Autentificación de 2 Factores" }, "disable2FA": { diff --git a/dashboard/public/translation/fr.json b/dashboard/public/translation/fr.json index 542aeffe0..e629b2c53 100644 --- a/dashboard/public/translation/fr.json +++ b/dashboard/public/translation/fr.json @@ -237,7 +237,6 @@ "title": "Modifier l'adresse email de récupération du mot de passe" }, "enable2FA": { - "description": "Votre administrateur Cloudron a demandé à tous les membres d'activer l'authentification à deux facteurs (2FA). Pour accéder au tableau de bord, veuillez l'activer.", "token": "Jeton", "title": "Activer l'authentification à deux facteurs (2FA)", "enable": "Activer", diff --git a/dashboard/public/translation/it.json b/dashboard/public/translation/it.json index 09f36f9a1..47f922970 100644 --- a/dashboard/public/translation/it.json +++ b/dashboard/public/translation/it.json @@ -616,7 +616,6 @@ "enable2FA": { "enable": "Abilita", "authenticatorAppDescription": "Usa Google Authenticator (Android, iOS), FreeOTP authenticator (Android, iOS) o una qualsiasi app TOTP per eseguire la scansione del codice segreto.", - "description": "Il tuo amministratore Cloudron ha richiesto a tutti i membri di abilitare l'autenticazione a due fattori. Non sarai in grado di accedere alla dashboard finché non abiliti 2FA.", "title": "Abilita autenticazione a Due Fattori", "token": "Token" }, diff --git a/dashboard/public/translation/nl.json b/dashboard/public/translation/nl.json index 4f6703104..f15bcc69d 100644 --- a/dashboard/public/translation/nl.json +++ b/dashboard/public/translation/nl.json @@ -278,7 +278,6 @@ "token": "Token", "enable": "Inschakelen", "title": "Schakel Twee-Factor (2FA) authenticatie in", - "description": "Jouw Cloudron Administrator heeft Twee-Factor (2FA) authenticatie voor alle gebruikers verplicht gesteld. Schakel jouw Twee-Factor (2FA) authenticatie in.", "authenticatorAppDescription": "Gebruik Google Authenticator (Android, iOS), FreeOTP authenticator (Android, iOS) of vergelijkbare Twee-Factor (2FA) authenticatie app om de QR-code te scannen." }, "appPasswords": { diff --git a/dashboard/public/translation/pt.json b/dashboard/public/translation/pt.json index 60d71ffd2..f97b4a346 100644 --- a/dashboard/public/translation/pt.json +++ b/dashboard/public/translation/pt.json @@ -115,7 +115,6 @@ "title": "Ativar Autenticação de Dois Fatores", "token": "Código", "enable": "Ativar", - "description": "O seu administrador do Cloudron exigiu que todos os membros ativassem a autenticação de dois fatores. Você não poderá aceder ao painel até ativar a 2FA.", "authenticatorAppDescription": "Utilize o Google Authenticator (Android, iOS), autenticador FreeOTP (Android, iOS) ou uma aplicação de TOTP similar para digitalizar o segredo." }, "apiTokens": { diff --git a/dashboard/public/translation/ru.json b/dashboard/public/translation/ru.json index 3778f1346..249052461 100644 --- a/dashboard/public/translation/ru.json +++ b/dashboard/public/translation/ru.json @@ -268,7 +268,6 @@ "disable": "Отключить" }, "enable2FA": { - "description": "Ваш Администратор Cloudron установил обязательным требованием использование двухфакторной аутентификации. Вы не сможете получить доступ к панели управления, пока не включите 2FA.", "authenticatorAppDescription": "Используйте Google AuthenticatorAndroid,iOS), FreeOTP (Android,iOS) или аналогичные TOTP приложения для сканирования секретного кода.", "title": "Включить двухфакторную аутентификацию (2FA)", "token": "Токен", diff --git a/dashboard/public/translation/vi.json b/dashboard/public/translation/vi.json index 72aca04de..8102fb3d0 100644 --- a/dashboard/public/translation/vi.json +++ b/dashboard/public/translation/vi.json @@ -248,7 +248,6 @@ "title": "Tắt chế độ Xác minh 2 Bước" }, "enable2FA": { - "description": "Admin Cloudron của bạn yêu cầu tất cả thành viên phải bật chế độ xác minh hai bước. Bạn không thể truy cập dashboard cho đến khi bật chế độ này.", "title": "Bật chế độ Xác minh 2 Bước", "token": "Mã", "authenticatorAppDescription": "Dùng Google Authenticator (Android, iOS), FreeOTP authenticator (Android, iOS) hoặc một app TOTP tương tự để quét mã.", diff --git a/dashboard/public/translation/zh_Hans.json b/dashboard/public/translation/zh_Hans.json index c937c5ebd..05fe7d767 100644 --- a/dashboard/public/translation/zh_Hans.json +++ b/dashboard/public/translation/zh_Hans.json @@ -59,7 +59,6 @@ "title": "启用双因素验证", "token": "动态验证码", "enable": "启用", - "description": "您的 Cloudron 管理员要求所有用户启用双因素验证,在启用之前您无法使用控制面板。", "authenticatorAppDescription": "使用 Google Authenticator (Android, iOS), FreeOTP authenticator (Android, iOS) 或类似的动态验证码 App 来扫描。" }, "appPasswords": { diff --git a/dashboard/src/Index.vue b/dashboard/src/Index.vue index 5f19263f4..9020d0fac 100644 --- a/dashboard/src/Index.vue +++ b/dashboard/src/Index.vue @@ -268,9 +268,7 @@ onMounted(async () => { avatarUrl.value = `https://${config.value.adminFqdn}/api/v1/cloudron/avatar`; - if (config.value.mandatory2FA && !profile.value.twoFactorAuthenticationEnabled) { - window.location.hash = '/profile?setup2fa'; // VIEWS.PROFILE has a # in front - } + if (config.value.mandatory2FA && !profile.value.twoFactorAuthenticationEnabled) window.location.href = VIEWS.PROFILE; window.addEventListener('hashchange', onHashChange); onHashChange(); diff --git a/dashboard/src/views/ProfileView.vue b/dashboard/src/views/ProfileView.vue index 928de74bc..3f2bc641c 100644 --- a/dashboard/src/views/ProfileView.vue +++ b/dashboard/src/views/ProfileView.vue @@ -102,7 +102,6 @@ async function onRevokeAllWebAndCliTokens() { // 2fa -const mandatory2FAHelp = ref(''); const twoFASecret = ref(''); const twoFATotpToken = ref(''); const twoFAQRCode = ref(''); @@ -171,7 +170,9 @@ onMounted(async () => { cliTokens.value = result.filter(function (c) { return c.clientId === TOKEN_TYPES.ID_CLI; }); // check if we should show the 2fa setup - if (window.location.hash.indexOf('setup2fa') !== -1) onOpenTwoFASetupDialog(); + if (config.value.mandatory2FA && !profile.value.twoFactorAuthenticationEnabled) { + onOpenTwoFASetupDialog(); + } }); @@ -183,9 +184,9 @@ onMounted(async () => { - + - {{ $t('profile.enable2FA.description') }} + {{ $t('profile.enable2FA.mandatorySetup') }} @@ -193,7 +194,6 @@ onMounted(async () => { - {{ twoFAEnableError }} @@ -202,6 +202,7 @@ onMounted(async () => { {{ $t('profile.enable2FA.enable') }} + {{ twoFAEnableError }}
{{ $t('profile.enable2FA.description') }}
{{ $t('profile.enable2FA.mandatorySetup') }}
{{ twoFAEnableError }}