| @@ -46,8 +46,11 @@ | ||
| 46 | 46 | if (!loginForm || !usernameField || !passwordField || !loginButton) return; |
| 47 | 47 | loginForm.addEventListener('submit', handleSubmit); |
| 48 | 48 | |
| 49 | 49 | function handleSubmit(event) { |
| 50 | + var formData = new FormData(loginForm); | |
| 51 | + var isResendRequest = formData.get('twofa_resend') === '1'; | |
| 52 | + | |
| 50 | 53 | event.preventDefault(); |
| 51 | 54 | if (requestInFlight) return; |
| 52 | 55 | requestInFlight = true; |
| 53 | 56 | showProgressBar(); |
| @@ -52,10 +55,8 @@ | ||
| 52 | 55 | requestInFlight = true; |
| 53 | 56 | showProgressBar(); |
| 54 | 57 | disableLoginButton(); |
| 55 | 58 | |
| 56 | - var formData = new FormData(loginForm); | |
| 57 | - var isResendRequest = formData.get('twofa_resend') === '1'; | |
| 58 | 59 | if (isResendRequest) formData.delete('twofa_code'); |
| 59 | 60 | clearResendStatus(); |
| 60 | 61 | |
| 61 | 62 | fetch(loginForm.action, { |
| @@ -92,8 +93,12 @@ | ||
| 92 | 93 | : 'Your previous code is still valid.'); |
| 93 | 94 | } |
| 94 | 95 | return; |
| 95 | 96 | } |
| 97 | + if (data.success) { | |
| 98 | + proceedWithLogin(); | |
| 99 | + return; | |
| 100 | + } | |
| 96 | 101 | |
| 97 | 102 | if (data.html) { |
| 98 | 103 | handleHtmlResponse(data.html, data.responseUrl, data.redirected); |
| 99 | 104 | } else if (data.data && data.data.message) { |
| @@ -121,14 +126,24 @@ | ||
| 121 | 126 | var parser = new DOMParser(); |
| 122 | 127 | var doc = parser.parseFromString(html, 'text/html'); |
| 123 | 128 | var errorElement = doc.getElementById('login_error'); |
| 124 | 129 | if (errorElement) { |
| 125 | - displayError(errorElement.innerText.trim()); | |
| 126 | - } else if (redirected && responseUrl) { | |
| 130 | + displayError(errorElement.textContent.trim()); | |
| 131 | + } else if (isTwoFAEnabled && redirected && responseUrl) { | |
| 127 | 132 | window.location.assign(responseUrl); |
| 133 | + } else if (isTwoFAEnabled) { | |
| 134 | + displayError('An unknown error occurred'); | |
| 128 | 135 | } else { |
| 129 | - displayError('An unknown error occurred'); | |
| 136 | + proceedWithLogin(); | |
| 130 | 137 | } |
| 138 | + } | |
| 139 | + | |
| 140 | + function proceedWithLogin() { | |
| 141 | + loginForm.removeEventListener('submit', handleSubmit); | |
| 142 | + hideProgressBar(); | |
| 143 | + enableLoginButton(); | |
| 144 | + requestInFlight = false; | |
| 145 | + loginForm.submit(); | |
| 131 | 146 | } |
| 132 | 147 | |
| 133 | 148 | function showTwoFAField(data) { |
| 134 | 149 | var twofaField = document.getElementById('twofa-code-field'); |