Created
September 5, 2018 04:03
-
-
Save Hc747/68248f0a479ca2d8fdda345a2bd72a5d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const express = require("express"); | |
const router = express.Router(); | |
const User = require("../../models/User.model"); | |
const bcrypt = require("bcrypt"); | |
const JWT = require("jsonwebtoken"); | |
function createToken(user) { | |
const payload = { | |
_id: user._id, | |
email: user.email, | |
creationDate: user.creationDate | |
}; | |
return JWT.sign({payload, expiresIn: 3600 * 24}, process.env.JWT_SECRET); | |
} | |
router.post('/login', async (request, response, next) => { | |
try { | |
const {email, password} = request.body; | |
if (!email || !password) { | |
return response.status(400).json({message: 'You must include the parameters: `email` and `password`.'}); | |
} | |
const user = await User.findOne({email}); | |
if (!user) { | |
return response.status(404).json({message: 'Incorrect email address or password.'}); | |
} | |
const validated = await user.isValidPassword(password); | |
if (!validated) { | |
return response.status(401).json({message: 'Incorrect email address or password.'}); | |
} | |
const token = createToken(user); | |
return response.json({token, message: 'Successfully logged in.'}); | |
} catch (exception) { | |
next(exception); | |
} | |
}); | |
router.post('/register', async (request, response, next) => { | |
try { | |
const { name, email, password } = request.body; | |
if (!name || !email || !password) { | |
return response.status(400).json({message: 'You must include the parameters: `name`, `email` and `password`.'}); | |
} | |
let user = await User.findOne({email}); | |
if (user) { | |
return response.status(401).json({message: 'The email address you\'ve tried to register with has already been taken.'}); | |
} | |
user = await User.create({name, email, password}); | |
if (!user) { | |
return response.status(500).json({message: 'An unexpected error occurred whilst registering your account.'}); | |
} | |
const token = createToken(user); | |
return response.json({token, message: 'Successfully registered.'}); | |
} catch (exception) { | |
next(exception); | |
} | |
}); | |
module.exports = router; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment