AllenYuan

users.js all routes

May 7th, 2020
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var mongoose = require('mongoose');
  2. var router = require('express').Router();
  3. var passport = require('passport');
  4. var User = mongoose.model('User');
  5. var auth = require('../auth');
  6.  
  7. router.post('/users', function(req, res, next) {
  8.   // create a user, set its fields to the data from request
  9.   var user = new User();
  10.  
  11.   user.username = req.body.user.username;
  12.   user.email = req.body.user.email;
  13.   user.setPassword(req.body.user.password);
  14.  
  15.   // save it in mongoDB and return user object w/ token
  16.   user.save().then(function() {
  17.     return res.json({user: user.toAuthJSON()});
  18.   }).catch(next);
  19. });
  20.  
  21. router.post('/users/login', function(req, res, next) {
  22.   // data validation
  23.   if (!req.body.user.email) {
  24.     return res.status(422).json({errors: {email: "can't be blank"}});
  25.   }
  26.  
  27.   if (!req.body.user.password) {
  28.     return res.status(422).json({errors: {password: "can't be blank"}});
  29.   }
  30.  
  31.   passport.authenticate('local', {session: false}, function(err, user, info) {
  32.     if (err){ return next(err); }
  33.     // authenticate user and return profile w/ token or an error
  34.     if (user) {
  35.       user.token = user.generateJWT();
  36.       return res.json({user: user.toAuthJSON()});
  37.     } else {
  38.       return res.status(422).json(info);
  39.     }
  40.   })(req, res, next);
  41. });
  42.  
  43. router.get('/user', auth.required, function(req, res, next) {
  44.   console.log('/user req', req);
  45.   // find requested user and return their profile as json
  46.   User.findById(req.payload.id).then(function(user) {
  47.     if (!user) { return res.sendStatus(401); }
  48.  
  49.     return res.json({user: user.toAuthJSON()});
  50.   }).catch(next);
  51. });
  52.  
  53. // update user with new profile data
  54. router.put('/user', auth.required, function(req, res, next) {
  55.   User.findById(req.payload.id).then(function(user) {
  56.     if (!user) { return res.sendStatus(401); }
  57.  
  58.     if (typeof req.body.user.username !== 'undefined') {
  59.       user.username = req.body.user.username;
  60.     }
  61.     if (typeof req.body.user.email !== 'undefined') {
  62.       user.email = req.body.user.email;
  63.     }
  64.     if (typeof req.body.user.bio !== 'undefined') {
  65.       user.bio = req.body.user.bio;
  66.     }
  67.     if (typeof req.body.user.image !== 'undefined') {
  68.       user.image = req.body.user.image;
  69.     }
  70.     if (typeof req.body.user.password !== 'undefined') {
  71.       user.setPassword(req.body.user.password);
  72.     }
  73.  
  74.     return user.save().then(function() {
  75.       return res.json({user: user.toAuthJSON()});
  76.     });
  77.   }).catch(next);
  78. });
  79.  
  80. module.exports = router;
Add Comment
Please, Sign In to add comment