44 lines
950 B
JavaScript
44 lines
950 B
JavaScript
|
const router = require('express').Router();
|
||
|
const bcrypt = require('bcryptjs');
|
||
|
|
||
|
const { generateToken } = require('../auth/authenticate');
|
||
|
const Users = require('../users/usersModel');
|
||
|
|
||
|
router.post('/register', (req, res) => {
|
||
|
let user = req.body;
|
||
|
const hash = bcrypt.hashSync(user.password, 10);
|
||
|
user.password = hash;
|
||
|
|
||
|
Users.add(user)
|
||
|
.then(saved => {
|
||
|
res.status(201).json(saved);
|
||
|
})
|
||
|
.catch(error => {
|
||
|
res.status(500).json(error);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
router.post('/login', (req, res) => {
|
||
|
let { username, password } = req.body;
|
||
|
|
||
|
Users.findBy({ username })
|
||
|
.first()
|
||
|
.then(user => {
|
||
|
if (user && bcrypt.compareSync(password, user.password)) {
|
||
|
const token = generateToken(user);
|
||
|
|
||
|
res.status(200).json({
|
||
|
message: `Welcome ${user.username}!`,
|
||
|
token
|
||
|
});
|
||
|
} else {
|
||
|
res.status(401).json({ message: 'Invalid Credentials' });
|
||
|
}
|
||
|
})
|
||
|
.catch(error => {
|
||
|
res.status(500).json(error);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
module.exports = router;
|