<template>
|
|
<section class="vh-100 background-color">
|
|
<div class="container py-5 h-100">
|
|
<div class="row justify-content-center align-items-center h-100">
|
|
<div class="col-12 col-lg-9 col-xl-7">
|
|
<div class="card shadow-2-strong card-registration border-2" style="border-radius: 15px;">
|
|
<div class="card-body p-4 p-md-5">
|
|
<h3 class="mb-4 pb-2 pb-md-0 mb-md-5">Login</h3>
|
|
<Form @submit="login" v-slot="{ meta, errors }">
|
|
<div class="row">
|
|
<div class="col-md-12 mb-4 pb-2">
|
|
<div class="form-outline">
|
|
<Field
|
|
v-model="email"
|
|
type="email"
|
|
id="emailAddress"
|
|
name="Email"
|
|
class="form-control form-control-lg"
|
|
:class="errors['Email'] ? 'invalid' : ''"
|
|
rules="required|email"/>
|
|
<label v-if="!errors['Email']" class="form-label" for="email">Email</label>
|
|
<ErrorMessage name="Email" as="label" class="form-label" for="email"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-12 mb-4 pb-2">
|
|
<div class="form-outline">
|
|
<Field
|
|
v-model="password"
|
|
type="password"
|
|
id="emailAddress"
|
|
name="Password"
|
|
class="form-control form-control-lg"
|
|
:class="errors['Password'] ? 'invalid' : ''"
|
|
rules="required|min:8"/>
|
|
<label v-if="!errors['Password']" class="form-label" for="password">Password</label>
|
|
<ErrorMessage name="Password" as="label" class="form-label" for="password"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mt-2 pt-2 center-align">
|
|
<button
|
|
:disabled="!meta.touched || !meta.valid"
|
|
class="btn btn-primary btn-lg"
|
|
type="submit"
|
|
>
|
|
Login
|
|
</button>
|
|
</div>
|
|
|
|
<div class="mt-2 pt-2 center-align">
|
|
<p style="padding-right: 10px;">Don't have an account? </p><router-link :to='{"name": "AdminSignup"}'>Sign up</router-link>
|
|
</div>
|
|
</Form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
</template>
|
|
|
|
<script>
|
|
import { Form, Field, ErrorMessage } from 'vee-validate'
|
|
|
|
export default {
|
|
name: 'AdminLogin',
|
|
data() {
|
|
return {
|
|
email: '',
|
|
password: '',
|
|
}
|
|
},
|
|
|
|
components: {
|
|
Form,
|
|
Field,
|
|
ErrorMessage,
|
|
},
|
|
|
|
methods: {
|
|
async login () {
|
|
try {
|
|
const response = await this.axios.post(
|
|
'/admin/login',
|
|
{
|
|
email: this.email,
|
|
password: this.password,
|
|
}
|
|
)
|
|
|
|
if (response.status === 200) {
|
|
this.$store.dispatch('setUser', response.data)
|
|
this.$router.push({ name: 'AdminUsersList' })
|
|
}
|
|
} catch (error) {
|
|
this.$toast.error('An error occured')
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|