-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathindex.js
115 lines (94 loc) · 2.53 KB
/
index.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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
const express = require('express')
// creating an express instance
const app = express()
const cookieSession = require('cookie-session')
const bodyParser = require('body-parser')
const passport = require('passport')
// getting the local authentication type
const LocalStrategy = require('passport-local').Strategy
const publicRoot = '/Users/laminsanneh/Sites/jscrambler/vueauth-final/vueauthclient/dist'
app.use(express.static(publicRoot))
app.use(bodyParser.json())
app.use(cookieSession({
name: 'mysession',
keys: ['vueauthrandomkey'],
maxAge: 24 * 60 * 60 * 1000 // 24 hours
}))
app.use(passport.initialize());
app.use(passport.session());
let users = [
{
id: 1,
name: "Jude",
email: "user@email.com",
password: "password"
},
{
id: 2,
name: "Emma",
email: "emma@email.com",
password: "password2"
},
]
app.get("/", (req, res, next) => {
res.sendFile("index.html", { root: publicRoot })
})
app.post("/api/login", (req, res, next) => {
passport.authenticate('local', (err, user, info) => {
if (err) {
return next(err);
}
if (!user) {
return res.status(400).send([user, "Cannot log in", info])
}
req.login(user, (err) => {
res.send("Logged in")
})
})(req, res, next)
})
app.get('/api/logout', function(req, res){
req.logout();
console.log("logged out")
return res.send();
});
const authMiddleware = (req, res, next) => {
if (!req.isAuthenticated()) {
res.status(401).send('You are not authenticated')
} else {
return next()
}
}
app.get("/api/user", authMiddleware, (req, res) => {
let user = users.find((user) => {
return user.id === req.session.passport.user
})
console.log([user, req.session])
res.send({user: user})
})
passport.use(new LocalStrategy({
usernameField: 'email',
passwordField: 'password'
},
(username, password, done) => {
let user = users.find((user) => {
return user.email === username && user.password === password
})
if (user) {
done(null, user)
} else {
done(null, false, {message: 'Incorrect username or password'})
}
}
))
passport.serializeUser((user, done) => {
done(null, user.id)
})
passport.deserializeUser((id, done) => {
let user = users.find((user) => {
return user.id === id
})
done(null, user)
})
app.listen(3000, () => {
console.log("Example app listening on port 3000")
})