summaryrefslogtreecommitdiffstats
path: root/webapp/src/components/LoginPage.vue
diff options
context:
space:
mode:
authorJannik Schönartz2019-02-22 02:59:26 +0100
committerJannik Schönartz2019-02-22 02:59:26 +0100
commit892a048d072d05886951bcb92e6b61c2094a6463 (patch)
tree2ff89b4d69c829304f55d529203eed985aaac413 /webapp/src/components/LoginPage.vue
parentrework user api to rest (diff)
downloadbas-892a048d072d05886951bcb92e6b61c2094a6463.tar.gz
bas-892a048d072d05886951bcb92e6b61c2094a6463.tar.xz
bas-892a048d072d05886951bcb92e6b61c2094a6463.zip
[authentication] Implement initial root account setup
[backend] Reworked authentication library to the api structure Add authentication api to remove the login routes from the router.js [webapp] Split login Page in StartPage + Login/Setup Add Setup Page for the initial root creation
Diffstat (limited to 'webapp/src/components/LoginPage.vue')
-rw-r--r--webapp/src/components/LoginPage.vue129
1 files changed, 0 insertions, 129 deletions
diff --git a/webapp/src/components/LoginPage.vue b/webapp/src/components/LoginPage.vue
deleted file mode 100644
index 40b08ee..0000000
--- a/webapp/src/components/LoginPage.vue
+++ /dev/null
@@ -1,129 +0,0 @@
-<i18n>
-{
- "en": {
- "username": "Username",
- "password": "Password",
- "login": "Login",
- "usernameError": "User not found.",
- "passwordError": "Wrong password.",
- "usernameEmptyError": "Username can not be empty.",
- "passwordEmptyError": "Passwort can not be empty."
- },
- "de": {
- "username": "Benutzername",
- "password": "Passwort",
- "login": "Anmelden",
- "usernameError": "Benutzer nicht gefunden.",
- "passwordError": "Passwort falsch.",
- "usernameEmptyError": "Benutzername kann nicht leer sein.",
- "passwordEmptyError": "Passwort kann nicht leer sein."
- }
-}
-</i18n>
-
-<template>
- <v-app dark class="grey darken-4 non-selectable">
- <div class="login-page">
- <img class="logo non-draggable" src="@/assets/logo.svg" />
- <v-form class="login-form" ref="form" v-model="valid" lazy-validation @submit.prevent="login">
- <v-text-field
- v-model="username"
- :rules="usernameRules"
- :label="$t('username')"
- autocomplete="off"
- @input="clearErrors"
- ></v-text-field>
- <v-text-field
- type="password"
- v-model="password"
- :rules="passwordRules"
- :label="$t('password')"
- autocomplete="off"
- @input="passwordError = false"
- ></v-text-field>
- <v-btn type="submit" class="login-button primary" raised>{{ $t('login') }}</v-btn>
- </v-form>
- </div>
- </v-app>
-</template>
-
-<script>
-
-export default {
- name: 'LoginPage',
- data () {
- return {
- loginRedirect: null,
- valid: true,
- username: '',
- usernameError: false,
- usernameRules: [
- v => !!v || this.$t('usernameEmptyError'),
- v => !this.usernameError || this.$t('usernameError')
- ],
- password: '',
- passwordError: false,
- passwordRules: [
- v => !!v || this.$t('passwordEmptyError'),
- v => !this.passwordError || this.$t('passwordError')
- ]
- }
- },
- methods: {
- clearErrors () {
- if (this.usernameError) this.usernameError = false
- if (this.passwordError) {
- this.passwordError = false
- this.$refs.form.validate()
- }
- },
- login () {
- if (this.$refs.form.validate()) {
- this.$http.post('/api/login', { username: this.username, password: this.password })
- .then(response => {
- const nextRoute = this.$store.state.loginRedirect
- if (nextRoute) this.$router.replace(nextRoute)
- else this.$router.replace({ name: 'dashboard' })
- this.$socket.open()
- })
- .catch(error => {
- if (error.response.data.status === 'USER_NOTFOUND') {
- this.usernameError = true
- } else if (error.response.data.status === 'PASSWORD_INVALID') {
- this.passwordError = true
- }
- this.$refs.form.validate()
- })
- }
- }
- }
-}
-</script>
-
-<style scoped>
-
-.login-page {
- height: 100%;
- width: 100%;
- min-height: 500px;
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
-}
-
-.logo {
- height: 180px;
- margin-bottom: 60px;
-}
-
-.login-form {
- width: 300px;
-}
-
-.login-button {
- margin-top: 20px;
- float: right;
-}
-
-</style>