Advertisement
Guest User

Untitled

a guest
Apr 9th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. const config = require('config');
  2. const jwt = require('jsonwebtoken');
  3. const Joi = require('joi');
  4. const bcrypt = require('bcrypt');
  5. const { User } = require('../models/user');
  6. const mongoose = require('mongoose');
  7. const express = require('express');
  8. const router = express.Router();
  9.  
  10. router.post('/', async (req, res) => {
  11. const { error } = validate(req.body);
  12. if (error) return res.status(400).send(error.details[0].message);
  13.  
  14. let user = await User.findOne({ email: req.body.email });
  15. if (!user) return res.status(400).send('Invalid email or password.');
  16.  
  17. const validPassword = await bcrypt.compare(req.body.password, user.password);
  18. if (!validPassword) return res.status(400).send('Invalid email or password.');
  19.  
  20. const token = jwt.sign({ _id: user._id }, 'jtwPrivateKey');
  21. res.header('auth-token', token).send(user._id, user.name, user.surname, user.email);
  22. });
  23.  
  24. function validate(req) {
  25. const schema = {
  26. email: Joi.string().min(5).max(255).required().email(),
  27. password: Joi.string().min(5).max(1024).required(),
  28. };
  29.  
  30. return Joi.validate(req, schema);
  31. }
  32.  
  33. module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement