diff --git a/src/resources/lang/en/ui.php b/src/resources/lang/en/ui.php --- a/src/resources/lang/en/ui.php +++ b/src/resources/lang/en/ui.php @@ -215,6 +215,7 @@ 'forgot_password' => "Forgot password?", 'header' => "Please sign in", 'sign_in' => "Sign in", + 'signing_in' => "Signing in...", 'webmail' => "Webmail" ], diff --git a/src/resources/vue/Login.vue b/src/resources/vue/Login.vue --- a/src/resources/vue/Login.vue +++ b/src/resources/vue/Login.vue @@ -28,7 +28,9 @@ {{ $t('login.2fa_desc') }}
- {{ $t('login.sign_in') }} + + {{ $t(loading ? 'login.signing_in' : 'login.sign_in') }} +
@@ -59,7 +61,8 @@ email: '', password: '', secondfactor: '', - webmailURL: window.config['app.webmail_url'] + webmailURL: window.config['app.webmail_url'], + loading: false } }, methods: { @@ -68,13 +71,18 @@ const post = this.$root.pick(this, ['email', 'password', 'secondfactor']) + this.loading = true + axios.post('/api/auth/login', post) .then(response => { // login user and redirect to dashboard this.$root.loginUser(response.data, this.dashboard) this.$emit('success') }) - .catch(e => {}) + .catch(() => {}) + .finally(() => { + this.loading = false + }) } } } diff --git a/src/resources/vue/Widgets/Btn.vue b/src/resources/vue/Widgets/Btn.vue --- a/src/resources/vue/Widgets/Btn.vue +++ b/src/resources/vue/Widgets/Btn.vue @@ -1,6 +1,7 @@ @@ -9,6 +10,7 @@ props: { type: { type: String, default: 'button' }, icon: { type: [ Array, String ], default: '' }, + isLoading: { type: Boolean, default: false } } }