Repository: incubator-ignite Updated Branches: refs/heads/ignite-843 55eeb8710 -> 68fc3dd7e
IGNITE-843 WIP on profile update. Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/68fc3dd7 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/68fc3dd7 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/68fc3dd7 Branch: refs/heads/ignite-843 Commit: 68fc3dd7eb698dcad09e37a1b63c9ec2063c9b0b Parents: 55eeb87 Author: AKuznetsov <akuznet...@gridgain.com> Authored: Fri Jul 10 13:04:43 2015 +0700 Committer: AKuznetsov <akuznet...@gridgain.com> Committed: Fri Jul 10 13:04:43 2015 +0700 ---------------------------------------------------------------------- .../nodejs/controllers/profile-controller.js | 53 ++++++------- .../web-control-center/nodejs/routes/profile.js | 80 +++++++++++++------- .../nodejs/views/profile.jade | 10 +-- 3 files changed, 83 insertions(+), 60 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/68fc3dd7/modules/web-control-center/nodejs/controllers/profile-controller.js ---------------------------------------------------------------------- diff --git a/modules/web-control-center/nodejs/controllers/profile-controller.js b/modules/web-control-center/nodejs/controllers/profile-controller.js index 11c965e..f6330a7 100644 --- a/modules/web-control-center/nodejs/controllers/profile-controller.js +++ b/modules/web-control-center/nodejs/controllers/profile-controller.js @@ -20,8 +20,6 @@ controlCenterModule.controller('profileController', ['$scope', '$alert', '$http' $scope.profileUser = angular.copy($scope.loggedInUser); - $scope.editField = null; - $scope.showInfo = function (msg) { $scope.showAlert(msg, 'success'); }; @@ -42,38 +40,41 @@ controlCenterModule.controller('profileController', ['$scope', '$alert', '$http' }; $scope.saveUser = function() { + var profile = $scope.profileUser; + if ($scope.profileUser) { - var userName = $scope.profileUser.username; - var oldPass = $scope.profileUser.oldPassword; - var newPass = $scope.profileUser.newPassword; - var confirm = $scope.profileUser.confirm; + var userName = profile.username; + var email = profile.email; + var oldPassword = profile.oldPassword; + var newPassword = profile.newPassword; + var confirmPassword = profile.confirmPassword; + + var changeUsername = userName && userName.length > 0 && userName != $scope.loggedInUser.username; + var changeEmail = email && email.length > 0 && email != $scope.loggedInUser.email; - if (userName && oldPass && newPass && confirm && - userName.length > 0 && oldPass.length > 0 && newPass.length > 0 && confirm.length > 0 && - newPass == confirm - ) { - $http.post('/profile/changePassword', { - _id: $scope.editableUser._id, - pass: $scope.pass1 + var changePassword = profile.changePassword && oldPassword && newPassword && confirmPassword && + oldPassword.length > 0 && newPassword.length > 0 && confirmPassword.length > 0 && newPassword == confirmPassword; + + if (changeUsername || changeEmail || changePassword) { + $http.post('/profile/saveUser', { + _id: profile._id, + changeUsername: changeUsername, + userName: userName, + changeEmail: changeEmail, + email: email, + changePassword: changePassword, + oldPassword: oldPassword, + newPassword: newPassword, + confirmPassword: confirmPassword }).success(function () { $scope.showInfo('Profile saved.'); + + if (changeUsername) + $scope.loggedInUser.username = userName; }).error(function (err) { $scope.showError('Failed to save profile: ' + commonFunctions.errorMessage(err)); }); } } }; - - //$scope.$watch('editField', function(val) { - // if (!angular.equals($scope.editableUser, $scope.savedUser)) { - // $http.post('/profile/saveUser', $scope.editableUser).success(function(updatedUser) { - // angular.copy(updatedUser, $scope.savedUser); - // angular.copy(updatedUser, $scope.editableUser); - // - // $scope.showInfo('Profile has been updated'); - // }).error(function(err) { - // $scope.showError('Failed to update profile: ' + commonFunctions.errorMessage(err)); - // }); - // } - //}); }]); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/68fc3dd7/modules/web-control-center/nodejs/routes/profile.js ---------------------------------------------------------------------- diff --git a/modules/web-control-center/nodejs/routes/profile.js b/modules/web-control-center/nodejs/routes/profile.js index 71b03af..79c70c5 100644 --- a/modules/web-control-center/nodejs/routes/profile.js +++ b/modules/web-control-center/nodejs/routes/profile.js @@ -19,7 +19,7 @@ var router = require('express').Router(); var db = require('../db'); var uiUtils = require('../helpers/ui-utils'); -router.all('/profile/*', function(req, res, next) { +router.all('/profile/*', function (req, res, next) { var userId = req.body._id; if (userId != req.currentUserId() && userId != req.user._id) @@ -31,52 +31,74 @@ router.all('/profile/*', function(req, res, next) { /** * Get list of user accounts. */ -router.get('/', function(req, res) { +router.get('/', function (req, res) { var user_id = req.currentUserId(); db.Account.findById(user_id, function (err, user) { if (err) return res.status(500).send(err.message); - res.render('profile', {editableUser: user}); + res.render('profile'); }); }); -router.post('/saveUser', function(req, res) { - var u = { - username: req.body.username - }; - - db.Account.findByIdAndUpdate(req.body._id, u, {new: true}, function(err, val) { - if (err) - return res.status(500).send(err); - - res.json(uiUtils.filterUser(val)); - }) -}); +router.post('/saveUser', function (req, res) { + var params = req.body; -router.post('/changePassword', function(req, res) { - var pass = req.body.pass; - - if (!pass || pass.length == 0) - return res.sendStatus(500); - - db.Account.findById(req.body._id, function(err, user) { - if (err) - return res.status(500).send(err); - - user.setPassword(pass, function (err, updatedUser) { + if (params.changeUsername || params.changeEmail) { + var u = {}; + + if (params.changeUsername) + u.username = params.userName; + + if (params.changeEmail) + u.email = params.email; + + db.Account.findByIdAndUpdate(req.body._id, u, {new: true}, function (err, val) { if (err) return res.status(500).send(err); - updatedUser.save(function(err) { + res.json(uiUtils.filterUser(val)); + }) + } + + if (params.changeEmail) { + // TODO + } + + if (params.changePassword) { + var oldPassword = params.oldPassword; + var newPassword = params.newPassword; + var confirmPassword = params.confirmPassword; + + var zz = user.verifyPassword(oldPassword); + + if (!oldPassword || oldPassword.length == 0 || !zz) + return res.status(500).send('Wrong value for old password'); + + if (!newPassword || newPassword.length == 0) + return res.status(500).send('Wrong value for new password'); + + if (!confirmPassword || confirmPassword.length == 0 || newPassword != oldPassword) + return res.status(500).send('New password does not match confirmation'); + + db.Account.findById(params._id, function (err, user) { + if (err) + return res.status(500).send(err); + + user.setPassword(newPassword, function (err, updatedUser) { if (err) return res.status(500).send(err); - res.json(uiUtils.filterUser(user)); + updatedUser.save(function (err) { + if (err) + return res.status(500).send(err); + + res.json(uiUtils.filterUser(user)); + }); }); }); - }) + } }); module.exports = router; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/68fc3dd7/modules/web-control-center/nodejs/views/profile.jade ---------------------------------------------------------------------- diff --git a/modules/web-control-center/nodejs/views/profile.jade b/modules/web-control-center/nodejs/views/profile.jade index f726bc4..83deae2 100644 --- a/modules/web-control-center/nodejs/views/profile.jade +++ b/modules/web-control-center/nodejs/views/profile.jade @@ -41,21 +41,21 @@ block container input.form-control(type='email' ng-model='profileUser.email' placeholder='y...@domain.com' required) .details-row label - input(type="checkbox" ng-model='change_password') + input(type="checkbox" ng-model='profileUser.changePassword') | Change password - div(ng-show='change_password') + div(ng-show='profileUser.changePassword') .details-row +lbl('Old password:') .col-sm-4 - input.form-control(ng-show='change_password' type='password', ng-model='profileUser.oldPassword' placeholder='Old password' ng-required='change_password') + input.form-control(type='password', ng-model='profileUser.oldPassword' placeholder='Old password' ng-required='profileUser.changePassword') .details-row +lbl('New password:') .col-sm-4 - input.form-control(ng-show='change_password' type='password', ng-model='profileUser.newPassword' placeholder='New password' ng-required='change_password') + input.form-control(type='password', ng-model='profileUser.newPassword' placeholder='New password' ng-required='profileUser.changePassword') .details-row +lbl('Confirm:') .col-sm-4 - input.form-control(type='password', ng-model='profileUser.confirm' placeholder='Confirm' ng-required='change_password') + input.form-control(type='password', ng-model='profileUser.confirmPassword' placeholder='Confirm' ng-required='profileUser.changePassword') .col-sm-12.details-row button#save-btn.btn.btn-primary(ng-disabled='profileForm.$invalid' ng-click='saveUser()') Save