Guest User

Untitled

a guest
Jun 3rd, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. const mongoose = require('mongoose');
  2. const passport = require('passport');
  3. const router = require('express').Router();
  4. const auth = require('../auth');
  5. const Users = mongoose.model('Users');
  6.  
  7. //POST new user route (optional, everyone has access)
  8. router.post('/', auth.optional, (req, res, next) => {
  9. const { body: { user } } = req;
  10.  
  11. if(!user.email) {
  12. return res.status(422).json({
  13. errors: {
  14. email: 'is required',
  15. },
  16. });
  17. }
  18.  
  19. if(!user.password) {
  20. return res.status(422).json({
  21. errors: {
  22. password: 'is required',
  23. },
  24. });
  25. }
  26.  
  27. const finalUser = new Users(user);
  28.  
  29. finalUser.setPassword(user.password);
  30.  
  31. return finalUser.save()
  32. .then(() => res.json({ user: finalUser.toAuthJSON() }));
  33. });
  34.  
  35. //POST login route (optional, everyone has access)
  36. router.post('/login', auth.optional, (req, res, next) => {
  37. const { body: { user } } = req;
  38.  
  39. if(!user.email) {
  40. return res.status(422).json({
  41. errors: {
  42. email: 'is required',
  43. },
  44. });
  45. }
  46.  
  47. if(!user.password) {
  48. return res.status(422).json({
  49. errors: {
  50. password: 'is required',
  51. },
  52. });
  53. }
  54.  
  55. return passport.authenticate('local', { session: false }, (err, passportUser, info) => {
  56. if(err) {
  57. return next(err);
  58. }
  59.  
  60. if(passportUser) {
  61. const user = passportUser;
  62. user.token = passportUser.generateJWT();
  63.  
  64. return res.json({ user: user.toAuthJSON() });
  65. }
  66.  
  67. return status(400).info;
  68. })(req, res, next);
  69. });
  70.  
  71. //GET current route (required, only authenticated users have access)
  72. router.get('/current', auth.required, (req, res, next) => {
  73. const { payload: { id } } = req;
  74.  
  75. return Users.findById(id)
  76. .then((user) => {
  77. if(!user) {
  78. return res.sendStatus(400);
  79. }
  80.  
  81. return res.json({ user: user.toAuthJSON() });
  82. });
  83. });
  84.  
  85. module.exports = router;
Add Comment
Please, Sign In to add comment