-
Notifications
You must be signed in to change notification settings - Fork 2
/
auth.js
51 lines (41 loc) · 1.33 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
const router = require('express').Router();
const User = require('../models/user.model');
const jwt = require('jsonwebtoken');
const protect = require('./protect');
router.route("/register").post((req, res, nxt) => {
const { username, email, password } = req.body;
User.create({
userName: username,
email: email,
password: password
}).then(user => {
const token = user.getToken();
res.status(201).json({
success: true,
token: token
});
});
});
router.route("/login").post((req, res, nxt) => {
const { email, password } = req.body;
//if !email or passwd
if (!email || !password) {
res.status(404).json({ success: false, error: "Invalid data" });
return;
}
const user = User.findOne({ email }).select("+password").then(user => {
if (!user) {
res.status(404).json({ success: false, error: "Invalid email" });
return;
}
user.comparePassword(password).then(isMatch => {
if (isMatch) {
const token = user.getToken();
res.status(201).json({ success: true, token: token });
} else {
res.status(404).json({ success: false, error: "Invalid password" });
}
});
});
});
module.exports = router;