From 6330d6579f5a87cbd4ba624f968a114e9f32a47a Mon Sep 17 00:00:00 2001 From: Dane Everitt Date: Sat, 29 Dec 2018 19:24:52 -0800 Subject: [PATCH] Undo the ts setting in vue components, begin migration to Vue.component setup --- resources/assets/scripts/components/Flash.vue | 2 +- .../assets/scripts/components/MessageBox.vue | 2 +- .../components/auth/ForgotPassword.vue | 2 +- .../assets/scripts/components/auth/Login.ts | 36 ++++++ .../assets/scripts/components/auth/Login.vue | 46 ------- .../scripts/components/auth/LoginForm.ts | 112 +++++++++++++++++ .../scripts/components/auth/LoginForm.vue | 115 ------------------ .../scripts/components/auth/ResetPassword.vue | 2 +- .../scripts/components/auth/TwoFactorForm.vue | 2 +- .../assets/scripts/components/core/Modal.vue | 2 +- .../scripts/components/core/Navigation.vue | 2 +- .../scripts/components/dashboard/Account.vue | 2 +- .../components/dashboard/Dashboard.vue | 2 +- .../components/dashboard/ServerBox.vue | 2 +- .../dashboard/account/ChangePassword.vue | 2 +- .../account/TwoFactorAuthentication.vue | 2 +- .../dashboard/account/UpdateEmail.vue | 2 +- .../assets/scripts/components/forms/CSRF.vue | 2 +- .../scripts/components/server/Server.vue | 4 +- .../components/server/ServerAllocations.vue | 2 +- .../components/server/ServerSchedules.vue | 2 +- .../components/server/ServerSettings.vue | 2 +- .../components/server/ServerSubusers.vue | 2 +- .../server/components/PowerButtons.vue | 4 +- .../server/components/ProgressBar.vue | 2 +- .../database/CreateDatabaseModal.vue | 2 +- .../components/database/DatabaseRow.vue | 2 +- .../database/DeleteDatabaseModal.vue | 2 +- .../filemanager/FileManagerContextMenu.vue | 2 +- .../filemanager/FileManagerFileRow.vue | 2 +- .../filemanager/FileManagerFolderRow.vue | 2 +- .../components/server/subpages/Console.vue | 4 +- .../components/server/subpages/Databases.vue | 2 +- .../server/subpages/FileManager.vue | 2 +- resources/assets/scripts/router.ts | 2 +- 35 files changed, 179 insertions(+), 198 deletions(-) create mode 100644 resources/assets/scripts/components/auth/Login.ts delete mode 100644 resources/assets/scripts/components/auth/Login.vue create mode 100644 resources/assets/scripts/components/auth/LoginForm.ts delete mode 100644 resources/assets/scripts/components/auth/LoginForm.vue diff --git a/resources/assets/scripts/components/Flash.vue b/resources/assets/scripts/components/Flash.vue index 860d94749..8da4dfd5a 100644 --- a/resources/assets/scripts/components/Flash.vue +++ b/resources/assets/scripts/components/Flash.vue @@ -12,7 +12,7 @@ - diff --git a/resources/assets/scripts/components/auth/LoginForm.ts b/resources/assets/scripts/components/auth/LoginForm.ts new file mode 100644 index 000000000..3ca24ec86 --- /dev/null +++ b/resources/assets/scripts/components/auth/LoginForm.ts @@ -0,0 +1,112 @@ +import Vue from 'vue'; +import {isObject} from 'lodash'; + +export default Vue.component('login-form', { + props: { + user: { + type: Object, + required: false, + default: function () { + return { + email: '', + password: '', + }; + }, + } + }, + data: function () { + return { + showSpinner: false, + } + }, + mounted: function () { + (this.$refs.email as HTMLElement).focus(); + }, + methods: { + // Handle a login request eminating from the form. If 2FA is required the + // user will be presented with the 2FA modal window. + submitForm: function () { + const self = this; + this.$data.showSpinner = true; + + this.$flash.clear(); + this.$store.dispatch('auth/login', {user: this.$props.user.email, password: this.$props.user.password}) + .then(response => { + if (response.complete) { + return window.location = response.intended; + } + + this.$props.user.password = ''; + this.$data.showSpinner = false; + this.$router.push({name: 'checkpoint', query: {token: response.token}}); + }) + .catch(err => { + this.$props.user.password = ''; + this.$data.showSpinner = false; + (this.$refs.password as HTMLElement).focus(); + this.$store.commit('auth/logout'); + + if (!err.response) { + return console.error(err); + } + + const response = err.response; + if (response.data && isObject(response.data.errors)) { + response.data.errors.forEach(function (error: any) { + self.$flash.error(error.detail); + }); + } + }); + }, + + // Update the email address associated with the login form + // so that it is populated in the parent model automatically. + updateEmail: function (event: { target: HTMLInputElement }) { + this.$emit('update-email', event.target.value); + } + }, + template: ` +
+
+
+ + +
+
+
+
+ + +
+
+
+ +
+
+ + {{ $t('auth.forgot_password.label') }} + +
+
+ `, +}); diff --git a/resources/assets/scripts/components/auth/LoginForm.vue b/resources/assets/scripts/components/auth/LoginForm.vue deleted file mode 100644 index 84770b379..000000000 --- a/resources/assets/scripts/components/auth/LoginForm.vue +++ /dev/null @@ -1,115 +0,0 @@ - - - diff --git a/resources/assets/scripts/components/auth/ResetPassword.vue b/resources/assets/scripts/components/auth/ResetPassword.vue index 1e84e2738..451b78ac8 100644 --- a/resources/assets/scripts/components/auth/ResetPassword.vue +++ b/resources/assets/scripts/components/auth/ResetPassword.vue @@ -55,7 +55,7 @@ -