summaryrefslogtreecommitdiff
path: root/server/lib/api/profile.js
blob: d72a2c3179ab173d96fa555f84e4a5b55b481911 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/* jshint node: true */

var _ = require('lodash'),
	crypto = require('crypto'),
	util = require('../util'),
	upload = require('../upload'),
	config = require('../../../config.json'),
	User = require('../schemas/User');

var profile = {
	show: function(req, res){
		User.findOne({ _id: req.user._id }, function(err, user){
		  user = user.toObject()
		  delete user.password
			res.json(err || user)
		})
	},
	
	update: function(req, res){
		var data = util.cleanQuery(req.body)
		if (data.new_password && data.new_password.length) {
			if (! data.old_password || ! req.user.checkPassword(data.old_password)) {
				res.json({ error: { errors: { password: { message: "Old password is incorrect" } } } })
			}
			
			var shasum = crypto.createHash('sha1')
			shasum.update(data.new_password)
			password = shasum.digest('hex');
			
			req.user.password = password
		}
		delete data.old_password
		delete data.new_password
		delete data.isStaff
		delete data.plan_level
		data.updated_at = new Date ()
		
		if (req.files.avatar) {
			upload.put("avatars", req.files.avatar, {
				unacceptable: function(err){
					res.json({ error: { errors: { avatar: { message: "Problem saving avatar: " + err } } } })
				},
				success: function(url){
					data.photo = url
					done()
				}
			})
		}
		else {
			done()
		}
		
		function done () {
			_.extend( req.user, data )
			req.user.save(function(err, msg) {
				err ? res.json({ status: "FAIL", error: err })
					: res.json({ status: "OK", payload: req.user })
			})
		}
	}
}

module.exports = profile