-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathbase-routes.js
95 lines (86 loc) · 1.89 KB
/
base-routes.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
'use strict'
const Boom = require('boom')
const Bcrypt = require('bcrypt')
const Users = require('./users-db')
const routes = [
{
method: 'GET',
path: '/',
config: {
auth: {
mode: 'try',
strategy: 'session'
},
plugins: {
'hapi-auth-cookie': {
redirectTo: false
}
},
handler: function (request, reply) {
if (request.auth.isAuthenticated) {
return reply.view('profile')
}
reply.view('index')
}
}
},
{
method: 'GET',
path: '/admin',
config: {
auth: {
strategy: 'session',
scope: 'admin'
},
handler: function (request, reply) {
reply.view('admin')
}
}
},
{
method: 'POST',
path: '/',
config: {
// auth: 'session',
auth: {
mode: 'try'
},
plugins: {
'hapi-auth-cookie': {
redirectTo: false
}
},
handler: function (request, reply) {
if (request.auth.isAuthenticated) {
return reply.view('Profile')
}
const username = request.payload.username
let user = Users[ username ]
if (!user) {
return reply(Boom.notFound('No user registered with given credentials'))
}
const password = request.payload.password
return Bcrypt.compare(password, user.password, function (err, isValid) {
if (isValid) {
request.server.log('info', 'user authentication successful')
request.cookieAuth.set(user)
return reply.view('profile')
}
return reply.view('index')
})
}
}
},
{
method: 'GET',
path: '/logout',
config: {
auth: 'session',
handler: function (request, reply) {
request.cookieAuth.clear()
reply.view('index')
}
}
}
]
module.exports = routes