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;
    });