flaschengeist-frontend/src/pages/Login.vue

76 lines
1.9 KiB
Vue
Raw Normal View History

<template>
<q-page padding class="fit row justify-center items-center content-center">
<q-card
class="col-xs-11 col-sm-8 col-md-6 col-lg-4 justify-center items-center content-center"
>
<q-toolbar class="bg-primary text-white">
<q-toolbar-title>
Login
</q-toolbar-title>
</q-toolbar>
<q-card-section>
<q-form ref="LoginForm" @submit="doLogin" class="q-gutter-md">
<q-input
filled
2020-10-15 01:36:25 +00:00
v-model="userid"
label="Benutzername oder E-Mail"
:rules="rules"
/>
<q-input
filled
v-model="password"
type="password"
label="Password"
:rules="rules"
/>
<div class="row justify-end">
<q-btn label="Login" type="submit" color="primary" />
</div>
</q-form>
</q-card-section>
</q-card>
</q-page>
</template>
<script lang="ts">
import { defineComponent, ref } from '@vue/composition-api';
import { Loading } from 'quasar';
export default defineComponent({
// name: 'PageName'
2020-11-06 00:12:03 +00:00
setup(_, { root }) {
const mainRoute = { name: 'dashboard' };
/* Stuff for the real login page */
2020-10-15 01:36:25 +00:00
const userid = ref('');
const password = ref('');
const rules = [
(val: string) => (val && val.length > 0) || 'Feld darf nicht leer sein!'
];
function doLogin() {
Loading.show({
message: 'Du wirst angemeldet'
});
2020-11-06 00:12:03 +00:00
root.$store
.dispatch('session/login', {
2020-10-28 23:10:45 +00:00
userid: userid.value,
password: password.value
})
.then(() => {
const x = root.$route.query['redirect'];
void root.$router.replace(
typeof x === 'string' ? { path: x } : mainRoute
);
})
.finally(() => {
Loading.hide();
2020-10-28 23:10:45 +00:00
});
}
2020-10-15 01:36:25 +00:00
return { userid, password, doLogin, rules };
}
});
</script>