diff --git a/dev/View/Admin/Login.js b/dev/View/Admin/Login.js index 38ce13003..c9657e8f4 100644 --- a/dev/View/Admin/Login.js +++ b/dev/View/Admin/Login.js @@ -1,3 +1,4 @@ +import { fireEvent } from 'Common/Globals'; import { getNotification } from 'Common/Translator'; import Remote from 'Remote/Admin/Fetch'; @@ -5,7 +6,7 @@ import Remote from 'Remote/Admin/Fetch'; import { decorateKoCommands } from 'Knoin/Knoin'; import { AbstractViewLogin } from 'Knoin/AbstractViews'; -class LoginAdminView extends AbstractViewLogin { +export class LoginAdminView extends AbstractViewLogin { constructor() { super('AdminLogin'); @@ -32,12 +33,12 @@ class LoginAdminView extends AbstractViewLogin { } submitCommand(self, event) { - const valid = event.target.form.reportValidity(), - name = this.login().trim(), - pass = this.password(); + let form = event.target.form, + data = new FormData(form), + valid = form.reportValidity() && fireEvent('sm-admin-login', data); - this.loginError(!name); - this.passwordError(!pass); + this.loginError(!this.login()); + this.passwordError(!this.password()); this.formError(!valid); if (valid) { @@ -45,21 +46,21 @@ class LoginAdminView extends AbstractViewLogin { Remote.request('AdminLogin', (iError, oData) => { + fireEvent('sm-admin-login-response', { + error: iError, + data: oData + }); if (iError) { this.submitRequest(false); this.submitError(getNotification(iError)); } else { rl.setData(oData.Result); } - }, { - Login: name, - Password: pass, - TOTP: this.totp() - }); + }, + data + ); } return valid; } } - -export { LoginAdminView }; diff --git a/dev/View/User/Login.js b/dev/View/User/Login.js index c490c838b..953e143a0 100644 --- a/dev/View/User/Login.js +++ b/dev/View/User/Login.js @@ -19,7 +19,7 @@ const SignMeOff = 0, SignMeUnused = 2; -class LoginUserView extends AbstractViewLogin { +export class LoginUserView extends AbstractViewLogin { constructor() { super('Login'); @@ -161,5 +161,3 @@ class LoginUserView extends AbstractViewLogin { showScreenPopup(LanguagesPopupView, [this.language, this.languages(), LanguageStore.userLanguage()]); } } - -export { LoginUserView }; diff --git a/plugins/recaptcha/js/recaptcha.js b/plugins/recaptcha/js/recaptcha.js index 1afa5de9a..246d7adc2 100644 --- a/plugins/recaptcha/js/recaptcha.js +++ b/plugins/recaptcha/js/recaptcha.js @@ -2,13 +2,16 @@ (rl => { rl && addEventListener('rl-view-model', e => { - if (e.detail && 'Login' === e.detail.viewModelTemplateID + const id = e.detail.viewModelTemplateID; + if (e.detail && ('AdminLogin' === id || 'Login' === id) && rl.pluginSettingsGet('recaptcha', 'show_captcha_on_login')) { let nId = null, script; const + mode = 'Login' === id ? 'user' : 'admin', + doc = document, container = e.detail.viewModelDom.querySelector('#plugin-Login-BottomControlGroup'), @@ -42,15 +45,15 @@ StartRecaptcha(); - addEventListener('sm-user-login', e => { + addEventListener(`sm-${mode}-login`, e => { if (null !== nId && window.grecaptcha) { e.detail.set('RecaptchaResponse', window.grecaptcha.getResponse(nId)); } else { - e.preventDefault() + e.preventDefault(); } }); - addEventListener('sm-user-login-response', e => { + addEventListener(`sm-${mode}-login-response`, e => { if (e.detail.error) { if (null !== nId && window.grecaptcha) { window.grecaptcha.reset(nId); diff --git a/snappymail/v/0.0.0/app/templates/Views/Admin/AdminLogin.html b/snappymail/v/0.0.0/app/templates/Views/Admin/AdminLogin.html index 89d3b6104..90bcd3423 100644 --- a/snappymail/v/0.0.0/app/templates/Views/Admin/AdminLogin.html +++ b/snappymail/v/0.0.0/app/templates/Views/Admin/AdminLogin.html @@ -5,21 +5,21 @@