forked from nickredmark/ooth
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
98 lines (91 loc) · 2.68 KB
/
app.js
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
var app = new Vue({
el: '#app',
data: {
user: null,
registerUser: {
email: "",
password: ""
},
loginUser: {
email: "",
password: ""
}
},
methods: {
checkUser: async function() {
const res = await fetch('/auth/status', {
credentials: 'include',
})
const body = await res.json()
if (body.status === 'error') {
alert(body.message)
return
}
Vue.set(this, 'user', body.user)
},
register: async function(e) {
const email = this.registerUser.email
const password = this.registerUser.password
const res = await fetch('/auth/local/register', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
email,
password,
}),
credentials: 'include',
})
const body = await res.json()
if (body.status === 'error') {
alert(body.message)
return
}
await this.loginWithEmailPassword(email, password)
},
loginWithEmailPassword: async function(username, password) {
const res = await fetch('/auth/local/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
username,
password,
}),
credentials: 'include',
})
const body = await res.json()
if (body.status === 'error') {
alert(body.message)
return
}
Vue.set(this, 'user', body.user)
this.clearForm()
},
logout: async function() {
const res = await fetch('/auth/logout', {
method: 'POST',
credentials: 'include',
})
const body = await res.json()
if (body.status === 'error') {
alert(body.message)
return
}
Vue.set(this, 'user', null)
},
clearForm: function() {
this.registerUser.email = ""
this.registerUser.password = ""
this.loginUser.email = ""
this.loginUser.password = ""
}
},
mounted: function() {
this.$nextTick(function() {
this.checkUser()
})
}
})