v0.0.13 14 Update user profile - zhentian-wan/MEANAppsFiles GitHub Wiki
#Server
config/routes.js:
app.put('/api/users', users.updateUser);
controller/usersController
exports.updateUser = function(req, res) {
var userData = req.body;
if(req.user._id != userData._id && !req.user.hasRole('admin')) {
res.status(403);
return res.end();
}
req.user.firstName = userData.firstName;
req.user.lastName = userData.lastName;
req.user.username = userData.username;
if(userData.password && userData.password.length > 0) {
req.user.salt = encrypt.createSalt();
req.user.hash_pwd = encrypt.hashPwd(req.user.salt, userData.password);
console.log(req.user.hash_pwd);
}
req.user.save(function(err) {
if(err){
res.status(400);
return res.send({reason: err.toString()});
}
res.send(req.user);
});
}
Client
service.updateProfile = function(newUserData) {
// when dealing wiht update, please clone the data to a new object
var clone = angular.copy(IdentityFactory.currentUser);
angular.extend(clone, newUserData);
console.log(clone);
return $q(function(resolve, reject) {
clone.$update().then(function() {
IdentityFactory.currentUser = clone;
resolve();
}, function(response) {
reject(response.data.reason);
})
});
};
angular.module('app')
.factory('UserResource', function($resource){
var UserResource = $resource('/api/users/:id', {_id: "@id"}, {
update: {
method: 'PUT',
isArray: false
}
});
UserResource.prototype.isAdmin = function() {
return this.role && this.role.indexOf('admin') > -1
};
return UserResource;
});