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 }
}
}