-
Notifications
You must be signed in to change notification settings - Fork 33
/
Login.vue
100 lines (98 loc) · 3.45 KB
/
Login.vue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<template>
<div class="login">
<div class="nav-bar">
<div class="empty"></div>
<div class="logo" style="width: 8em; height: 5.5em;">
<img class="logo-image" src="./../../public/icons/logo.png" style="width: 8em; height: 5.5em;">
</div>
<div class="empty"></div>
</div>
<h1>Sign In</h1>
<form action="#" @submit.prevent="submit">
<div class="form-group row">
<h2 for="email">Email</h2>
<input
id="email"
type="email"
class="form-control"
name="email"
value
required
autofocus
v-model="form.email"
/>
</div>
<div class="form-group row">
<h2 for="password">Password</h2>
<input
id="password"
type="password"
class="form-control"
name="password"
required
v-model="form.password"
/>
</div>
<div>
<button type="submit">Log In</button>
</div>
<div class="form-group">
<router-link to="/signup">Don't have an account? Sign up here!</router-link>
</div>
</form>
<div class="bottom-signin">
<div class="meet-dogs">
<img src="../../public/images/poppy.png">
<img src="../../public/images/joey.jpg">
</div>
<p>These dogs are waiting to meet yours!</p>
</div>
</div>
</template>
<script>
import firebase from "firebase";
import { db, store } from "../main";
export default {
data() {
return {
form: {
email: "",
password: ""
},
error: null
};
},
methods: {
// Fires when the user logs in
// Updates their info in the store and in the db
submit() {
const that = this;
firebase
.auth()
.signInWithEmailAndPassword(this.form.email, this.form.password)
.then((data) => {
// load the profile of the user in Vuex store
const ref = db.collection('users').doc(data.user.uid);
ref.get().then(function (doc) {
that.$store.commit('SET_PROFILE', doc.data());
that.$router.replace({name: "swiping"})
.then(() => {
console.log('Successfully logged in!');
})
})
})
.catch(err => {
console.log(this.error = err.message);
alert("Incorrect login and/or password")
});
}
},
// Makes sure that the vuex store is updated with the current user info
// Before going to another route
beforeRouteEnter(f, t, next) {
next(async (vm) => {
await this.$store.dispatch('fetchUser');
})
}
};
</script>