| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 | 
							- /**
 
-  * Created by zhengguorong on 16/11/1.
 
-  */
 
- const User = require('./user.model')
 
- const config = require('../../config')
 
- const jwt = require('jsonwebtoken')
 
- /**
 
-  * 处理提交表单验证错误
 
-  * @param res
 
-  * @param statusCode
 
-  * @returns {Function}
 
-  */
 
- const validationError = (res, statusCode) => {
 
-   statusCode = statusCode || 422
 
-   return function (err) {
 
-     return res.status(statusCode).json(err)
 
-   }
 
- }
 
- const handleError = (res, statusCode) => {
 
-   statusCode = statusCode || 500
 
-   return function (err) {
 
-     return res.status(statusCode).send(err)
 
-   }
 
- }
 
- module.exports.index = (req, res) => {
 
-   return User.find({}, '-salt -password').exec()
 
-     .then(users => {
 
-       res.status(200).json(users)
 
-     })
 
-     .catch(handleError(res))
 
- }
 
- module.exports.findByToken = (token) => {
 
-   return User.findOne({ token: token }).exec()
 
- }
 
- /**
 
-  * 创建用户
 
-  * @param req
 
-  * @param res
 
-  */
 
- module.exports.create = (req, res) => {
 
-   let newUser = new User(req.body)
 
-   newUser.provider = 'local'
 
-   newUser.role = 'user'
 
-   newUser.save()
 
-     .then((user) => {
 
-       let token = jwt.sign({ _id: user._id }, config.secrets.session, {
 
-         expiresIn: 60 * 60 * 5
 
-       })
 
-       user.token = token
 
-       var updateUser = JSON.parse(JSON.stringify(user))
 
-       delete updateUser._id
 
-       User.findOneAndUpdate({ _id: user._id }, updateUser).exec()
 
-       res.json({ token })
 
-     })
 
-     .catch(validationError(res))
 
- }
 
- /**
 
-  * 获取单个用户信息
 
-  */
 
- module.exports.show = (req, res, next) => {
 
-   let userId = req.params.id
 
-   return User.findById(userId).exec()
 
-     .then(user => {
 
-       if (!user) {
 
-         return res.status(400).end()
 
-       }
 
-       res.json(user.profile)
 
-     })
 
-     .catch(err => next(err))
 
- }
 
- /**
 
-  * 删除用户
 
-  * @param req
 
-  * @param res
 
-  * @returns {Promise.<TResult>|Promise}
 
-  */
 
- module.exports.destroy = (req, res) => {
 
-   return User.findByIdAndRemove(req.params.id).exec()
 
-     .then(() => {
 
-       res.status(204).end()
 
-     })
 
-     .catch(handleError(res))
 
- }
 
- /**
 
-  * 修改密码
 
-  * @param req
 
-  * @param res
 
-  * @returns {Promise.<TResult>}
 
-  */
 
- module.exports.changePassword = (req, res) => {
 
-   var uesrId = req.user._id
 
-   var oldPass = String(req.body.oldPassword)
 
-   var newPass = String(req.body.newPassword)
 
-   return User.findById(uesrId).exec()
 
-     .then(user => {
 
-       if (user.authenticate(oldPass)) {
 
-         user.password = newPass
 
-         return user.save()
 
-           .then(() => {
 
-             res.status(204).end()
 
-           })
 
-           .catch(validationError(res))
 
-       } else {
 
-         return res.status(403).end()
 
-       }
 
-     })
 
- }
 
- /**
 
-  * 用户登陆
 
-  * @param req
 
-  * @param res
 
-  * @returns {Promise.<TResult>}
 
-  */
 
- module.exports.login = (req, res) => {
 
-   var loginId = req.body.loginId
 
-   var password = req.body.password
 
-   let token
 
-   return User.findOne({ loginId: loginId }).exec()
 
-     .then(user => {
 
-       if (user && user.authenticate(password)) {
 
-         token = jwt.sign({ _id: user._id }, config.secrets.session, {
 
-           expiresIn: 60 * 60 * 5
 
-         })
 
-         user.token = token
 
-         var updateUser = JSON.parse(JSON.stringify(user))
 
-         delete updateUser._id
 
-         User.findOneAndUpdate({ _id: user._id }, updateUser).exec()
 
-         res.status(200).json({ token }).end()
 
-       } else {
 
-         return res.status(401).end()
 
-       }
 
-     })
 
- }
 
- /**
 
-  * 查看用户信息
 
-  * @param req
 
-  * @param res
 
-  * @param next
 
-  * @returns {Promise.<TResult>|Promise}
 
-  */
 
- module.exports.me = (req, res, next) => {
 
-   var userId = req.user._id
 
-   return User.findOne({ _id: userId }, '-salt -password').exec()
 
-     .then(user => { // don't ever give out the password or salt
 
-       if (!user) {
 
-         return res.status(401).end()
 
-       }
 
-       res.json(user)
 
-     })
 
-     .catch(err => next(err))
 
- }
 
 
  |