2022-12-16 23:17:37 +00:00
|
|
|
|
<template>
|
|
|
|
|
<div>
|
|
|
|
|
<div class="container-fluid">
|
|
|
|
|
<div class="row">
|
|
|
|
|
<div class="col-12 col-md-5 col-lg-4 bg-img" :style="{ backgroundImage: `url(${backgroundImagePath})` }" >
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-12 col-md-7 col-lg-8 pt-5 ">
|
|
|
|
|
<div class="py-3 text-center">
|
|
|
|
|
<img src="~/assets/image/Logo.png" style="width: 200px" />
|
|
|
|
|
</div>
|
|
|
|
|
<div class="text-center pt-1">
|
|
|
|
|
<h2 class="fw-bolder display-6 text-center" >Log In</h2>
|
|
|
|
|
<span class="fs-5 pt-1 text-muted">Welcome back, <span class="fw-bolder text-dark">Morris!</span></span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="row pt-4 pb-5">
|
|
|
|
|
<div class="col-12 pb-5">
|
2023-02-14 04:40:06 +00:00
|
|
|
|
<form @submit.prevent="loginNow" method="POST" class=" pb-5 ">
|
2022-12-16 23:17:37 +00:00
|
|
|
|
<div class="row pt-3 justify-content-center">
|
|
|
|
|
<div class="col-12 col-sm-8 col-md-8 col-lg-5">
|
|
|
|
|
<label class="form-label">Email</label>
|
2023-02-14 04:40:06 +00:00
|
|
|
|
<input type="email" v-model="form.email" placeholder="JohnDoe@gmail.com" class="form-control" >
|
|
|
|
|
<div class="invalid-feedback d-block" v-if="errors.email">{{errors.email[0]}}</div>
|
|
|
|
|
<div class="invalid-feedback d-block" v-if="auth_error">Email or password is wrong, please try again!</div>
|
2022-12-16 23:17:37 +00:00
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="row justify-content-center pt-3">
|
|
|
|
|
<div class="col-12 col-sm-8 col-md-8 col-lg-5">
|
|
|
|
|
<label class="form-label">Password</label>
|
2023-02-14 04:40:06 +00:00
|
|
|
|
<input type="password" v-model="form.password" placeholder="Password" class="form-control" >
|
|
|
|
|
<span class="float-end pt-2"><a class="forgot-link" href="#">Forgot Password</a></span>
|
2022-12-16 23:17:37 +00:00
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="row justify-content-center pb-5">
|
|
|
|
|
<div class="col-12 col-sm-8 col-md-8 col-lg-5 pt-4 text-center">
|
2023-02-14 04:40:06 +00:00
|
|
|
|
<button type="submit" class=" login-btn col-12" >Sign Up <div v-if="loading" class="spinner-border spinner-border-sm" role="status">
|
|
|
|
|
<span class="sr-only">Loading...</span>
|
|
|
|
|
</div></button>
|
2022-12-16 23:17:37 +00:00
|
|
|
|
<h5 class="text-center pt-3">Don’t have an Account? <NuxtLink class="signup-link" href="signup">Sign Up</NuxtLink></h5>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</form>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<script>
|
2023-02-14 04:40:06 +00:00
|
|
|
|
import backgroundImagePath from '~/assets/image/login4.png';
|
|
|
|
|
import {useUserStore} from '@/stores/user';
|
|
|
|
|
import {mapState,mapActions} from "pinia";
|
2022-12-16 23:17:37 +00:00
|
|
|
|
export default {
|
|
|
|
|
|
2023-02-11 19:25:59 +00:00
|
|
|
|
mounted() {
|
2023-02-14 04:40:06 +00:00
|
|
|
|
|
2023-02-11 19:25:59 +00:00
|
|
|
|
},
|
2023-02-14 04:40:06 +00:00
|
|
|
|
name:'Login',
|
2022-12-16 23:17:37 +00:00
|
|
|
|
data(){
|
|
|
|
|
return{
|
2023-02-14 04:40:06 +00:00
|
|
|
|
loading:false,
|
|
|
|
|
form:{
|
|
|
|
|
email:"",
|
|
|
|
|
password:"",
|
|
|
|
|
},
|
|
|
|
|
auth_error:false,
|
2022-12-16 23:17:37 +00:00
|
|
|
|
backgroundImagePath:backgroundImagePath,
|
2023-02-14 04:40:06 +00:00
|
|
|
|
errors:[]
|
2022-12-16 23:17:37 +00:00
|
|
|
|
}
|
2023-02-11 19:25:59 +00:00
|
|
|
|
},
|
|
|
|
|
methods:{
|
2023-02-14 04:40:06 +00:00
|
|
|
|
...mapActions(useUserStore,['login','logout']),
|
|
|
|
|
loginNow(){
|
|
|
|
|
this.errors=[];
|
|
|
|
|
this.auth_error=false;
|
|
|
|
|
this.loading=true;
|
|
|
|
|
this.$axios.post('/api/login',this.form).then(({data})=>{
|
|
|
|
|
this.loading=false;
|
|
|
|
|
this.login(data.user,data.authorization.token);
|
|
|
|
|
}).catch((error)=>{
|
|
|
|
|
this.loading=false;
|
|
|
|
|
console.log(error);
|
|
|
|
|
|
|
|
|
|
if(error.response.status==401){
|
|
|
|
|
this.auth_error=true;
|
|
|
|
|
}
|
|
|
|
|
if(error.response.status==422){
|
|
|
|
|
this.errors = error.response.data.errors;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2023-02-11 19:25:59 +00:00
|
|
|
|
})
|
|
|
|
|
}
|
2022-12-16 23:17:37 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|