Advertisement
Guest User

Untitled

a guest
Jun 29th, 2016
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 'use strict';
  2.  
  3. import User from './user.model';
  4. import passport from 'passport';
  5. import graph from 'fbgraph';
  6. import config from '../../config/environment';
  7. import jwt from 'jsonwebtoken';
  8.  
  9. function validationError(res, statusCode) {
  10.   statusCode = statusCode || 422;
  11.   return function(err) {
  12.     res.status(statusCode).json(err);
  13.   }
  14. }
  15.  
  16. function handleError(res, statusCode) {
  17.   statusCode = statusCode || 500;
  18.   return function(err) {
  19.     res.status(statusCode).send(err);
  20.   };
  21. }
  22.  
  23. /**
  24.  * Get list of users
  25.  * restriction: 'admin'
  26.  */
  27. export function index(req, res) {
  28.   return User.find({}, '-salt -password').exec()
  29.     .then(users => {
  30.       res.status(200).json(users);
  31.     })
  32.     .catch(handleError(res));
  33. }
  34.  
  35. /**
  36.  * Creates a new user
  37.  */
  38. export function create(req, res, next) {
  39.   var newUser = new User(req.body);
  40.   newUser.provider = 'local';
  41.   newUser.role = 'user';
  42.   newUser.save()
  43.     .then(function(user) {
  44.       var token = jwt.sign({ _id: user._id }, config.secrets.session, {
  45.         expiresIn: 60 * 60 * 5
  46.       });
  47.       res.json({ token });
  48.     })
  49.     .catch(validationError(res));
  50. }
  51.  
  52. /**
  53.  * Get a single user
  54.  */
  55. export function show(req, res, next) {
  56.   var userId = req.params.id;
  57.  
  58.   return User.findById(userId).exec()
  59.     .then(user => {
  60.       if (!user) {
  61.         return res.status(404).end();
  62.       }
  63.       res.json(user.profile);
  64.     })
  65.     .catch(err => next(err));
  66. }
  67.  
  68. /**
  69.  * Deletes a user
  70.  * restriction: 'admin'
  71.  */
  72. export function destroy(req, res) {
  73.   return User.findByIdAndRemove(req.params.id).exec()
  74.     .then(function() {
  75.       res.status(204).end();
  76.     })
  77.     .catch(handleError(res));
  78. }
  79.  
  80. /**
  81.  * Change a users password
  82.  */
  83. export function changePassword(req, res, next) {
  84.   var userId = req.user._id;
  85.   var oldPass = String(req.body.oldPassword);
  86.   var newPass = String(req.body.newPassword);
  87.  
  88.   return User.findById(userId).exec()
  89.     .then(user => {
  90.       if (user.authenticate(oldPass)) {
  91.         user.password = newPass;
  92.         return user.save()
  93.           .then(() => {
  94.             res.status(204).end();
  95.           })
  96.           .catch(validationError(res));
  97.       } else {
  98.         return res.status(403).end();
  99.       }
  100.     });
  101. }
  102.  
  103. /**
  104.  * Get my info
  105.  */
  106. export function me(req, res, next) {
  107.   var userId = req.user._id;
  108.  
  109.   return User.findOne({ _id: userId }, '-salt -password').exec()
  110.     .then(user => { // don't ever give out the password or salt
  111.       if (!user) {
  112.         return res.status(401).end();
  113.       }
  114.       graph.setAccessToken(user.facebookToken);
  115.      
  116.       res.json(user);
  117.     })
  118.     .catch(err => next(err));
  119. }
  120.  
  121. /**
  122.  * Authentication callback
  123.  */
  124. export function authCallback(req, res, next) {
  125.   res.redirect('/');
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement