-
Notifications
You must be signed in to change notification settings - Fork 0
/
auth.js
75 lines (57 loc) · 1.86 KB
/
auth.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
var bcrypt = require('bcrypt-nodejs');
var jwt = require('jwt-simple');
var express = require('express');
var router = express.Router();
var User = require('./models/User.js');
router.post('/register', async (req, res) => {
var userData = req.body;
var existingUser = await User.findOne({ email: userData.email });
if (existingUser) {
return res.status(500)
.send({ message: 'Invalid email' });
}
var newUser = new User(userData);
newUser.save((err, result) => {
if (err) {
return res.status(500)
.send({ message: 'Error saving user' });
}
createSendToken(res, newUser);
});
});
router.post('/login', async (req, res) => {
var loginData = req.body;
var user = await User.findOne({ email: loginData.email });
if (!user) {
return res.status(401)
.send({ message: 'Email or Password invalid' });
}
bcrypt.compare(loginData.password, user.password, (err, isMatch) => {
if (!isMatch) {
return res.status(401)
.send({ message: 'Email or Password invalid' });
}
createSendToken(res, user);
})
});
function createSendToken(res, user) {
var payload = { sub: user._id };
var token = jwt.encode(payload, '123');
res.status(200).send({ token });
}
var auth = {
router,
checkAuthenticated: (req, res, next) => {
if (!req.header('authorization')) {
return res.status(401).send({message: 'Unauthorized. Missing Auth Header'});
}
var token = req.header('authorization').split(' ')[1];
var payload = jwt.decode(token, '123');
if (!payload) {
return res.status(401).send({message: 'Unauthorized. Auth Header Invalid'});
}
req.userId = payload.sub;
next();
}
}
module.exports = auth;