const express = require('express'); const router = express.Router(); const bCrypt = require('bcrypt-nodejs'); const jwt = require('jsonwebtoken'); const Models = require('../../models'); /** * Get Auth Status */ router.get('/', function(req, res) { var token = req.headers['x-access-token']; if (!token) return res.status(401).send({ auth: false, message: 'No token provided.' }); jwt.verify(token, 'super-secret-string', function(err, decoded) { if (err) return res.status(500).send({ auth: false, message: 'Failed to authenticate token.' }); res.status(200).send(decoded); }); }); /** * Login Member and return token */ router.post('/login', function(req, res) { Models.User.findOne({ where: { handle: req.body.handle } }) .then(user => { if (!isValidPassword(user, req.body.password)) { return res.json({ message: 'CHECK YOUR PASSWORD' }); } let token = jwt.sign({ id: user._id }, 'super-secret-string', { expiresIn: 86400 // expires in 24 hours }); let session = req.session; session.user = user; session.token = token; res.json({ auth: 'Yes', token: session.token }); }) .catch(() => { return res.json({ message: 'NOT FOUND, HAWS' }); }); }); //router.post('/logout', function(req, res) {}); module.exports = router; function isValidPassword(user, password) { return bCrypt.compareSync(password, user.password); }