IGNITE-843 Fixed profile UI.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/0b1db97e Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/0b1db97e Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/0b1db97e Branch: refs/heads/ignite-843 Commit: 0b1db97ede5d4a16f3b8b7eacd554312dea89291 Parents: 399310b Author: AKuznetsov <akuznet...@gridgain.com> Authored: Fri Jul 10 11:24:10 2015 +0700 Committer: AKuznetsov <akuznet...@gridgain.com> Committed: Fri Jul 10 11:24:10 2015 +0700 ---------------------------------------------------------------------- modules/web-control-center/nodejs/app.js | 2 +- .../nodejs/controllers/profile-controller.js | 59 +++++++++++--------- .../web-control-center/nodejs/routes/profile.js | 6 +- .../nodejs/views/admin/userList.jade | 3 +- .../web-control-center/nodejs/views/login.jade | 11 ++-- .../nodejs/views/profile.jade | 43 +++++++++----- 6 files changed, 73 insertions(+), 51 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0b1db97e/modules/web-control-center/nodejs/app.js ---------------------------------------------------------------------- diff --git a/modules/web-control-center/nodejs/app.js b/modules/web-control-center/nodejs/app.js index a3efe2f..175ff00 100644 --- a/modules/web-control-center/nodejs/app.js +++ b/modules/web-control-center/nodejs/app.js @@ -127,7 +127,7 @@ app.all('*', function(req, res, next) { app.use('/', publicRoutes); app.use('/admin', mustAuthenticated, adminOnly, adminRouter); -app.use('/', mustAuthenticated, profileRouter); +app.use('/profile', mustAuthenticated, profileRouter); app.use('/configuration/clusters', clustersRouter); app.use('/configuration/caches', cachesRouter); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0b1db97e/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 5610a18..11c965e 100644 --- a/modules/web-control-center/nodejs/controllers/profile-controller.js +++ b/modules/web-control-center/nodejs/controllers/profile-controller.js @@ -18,7 +18,7 @@ controlCenterModule.controller('profileController', ['$scope', '$alert', '$http', 'commonFunctions', function ($scope, $alert, $http, commonFunctions) { - $scope.editableUser = angular.copy($scope.savedUser); + $scope.profileUser = angular.copy($scope.loggedInUser); $scope.editField = null; @@ -41,32 +41,39 @@ controlCenterModule.controller('profileController', ['$scope', '$alert', '$http' }); }; - $scope.changePass = function() { - if (!$scope.pass1 || $scope.pass1.length == 0 || $scope.pass1 != $scope.pass2) - return; + $scope.saveUser = function() { + if ($scope.profileUser) { + var userName = $scope.profileUser.username; + var oldPass = $scope.profileUser.oldPassword; + var newPass = $scope.profileUser.newPassword; + var confirm = $scope.profileUser.confirm; - $http.post('/profile/changePassword', {_id: $scope.editableUser._id, pass: $scope.pass1}).success(function() { - $scope.showInfo('Password has been changed'); - - $scope.pass1 = ''; - $scope.pass2 = ''; - $scope.showChangePasswordForm = false; - }).error(function(err) { - $scope.showError('Failed to change password: ' + commonFunctions.errorMessage(err)); - }); + 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 + }).success(function () { + $scope.showInfo('Profile saved.'); + }).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)); - }); - } - }); - + //$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/0b1db97e/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 1561704..71b03af 100644 --- a/modules/web-control-center/nodejs/routes/profile.js +++ b/modules/web-control-center/nodejs/routes/profile.js @@ -31,7 +31,7 @@ router.all('/profile/*', function(req, res, next) { /** * Get list of user accounts. */ -router.get('/profile', function(req, res) { +router.get('/', function(req, res) { var user_id = req.currentUserId(); db.Account.findById(user_id, function (err, user) { @@ -42,7 +42,7 @@ router.get('/profile', function(req, res) { }); }); -router.post('/profile/saveUser', function(req, res) { +router.post('/saveUser', function(req, res) { var u = { username: req.body.username }; @@ -55,7 +55,7 @@ router.post('/profile/saveUser', function(req, res) { }) }); -router.post('/profile/changePassword', function(req, res) { +router.post('/changePassword', function(req, res) { var pass = req.body.pass; if (!pass || pass.length == 0) http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0b1db97e/modules/web-control-center/nodejs/views/admin/userList.jade ---------------------------------------------------------------------- diff --git a/modules/web-control-center/nodejs/views/admin/userList.jade b/modules/web-control-center/nodejs/views/admin/userList.jade index a592c2a..1986ca2 100644 --- a/modules/web-control-center/nodejs/views/admin/userList.jade +++ b/modules/web-control-center/nodejs/views/admin/userList.jade @@ -20,8 +20,7 @@ block container .greedy.row(ng-controller='adminController') .docs-content .docs-header - h1 Users - p List of registered users + h1 List of registered users hr .docs-body table.table.table-striped(st-table='userListDisplay' st-safe-src='userList') http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0b1db97e/modules/web-control-center/nodejs/views/login.jade ---------------------------------------------------------------------- diff --git a/modules/web-control-center/nodejs/views/login.jade b/modules/web-control-center/nodejs/views/login.jade index a15bd73..204e763 100644 --- a/modules/web-control-center/nodejs/views/login.jade +++ b/modules/web-control-center/nodejs/views/login.jade @@ -14,6 +14,9 @@ See the License for the specific language governing permissions and limitations under the License. +mixin lbl(txt) + label.col-sm-3.required #{txt} + .modal.center(role='dialog') .modal-dialog .modal-content @@ -28,19 +31,19 @@ .modal-body.row .col-sm-9.login.col-sm-offset-1 .details-row(ng-show='action == "register"') - label.col-sm-3.required Full Name: + +lbl('Full Name:') .col-sm-9 input.form-control(type='text', ng-model='user_info.username', placeholder='John Smith', focus-me='action=="register"', ng-required='action=="register"') .details-row - label.col-sm-3.required Email: + +lbl('Email:') .col-sm-9 input.form-control(type='email', ng-model='user_info.email', placeholder='y...@domain.com', focus-me='action=="login"', required) .details-row - label.col-sm-3.required Password: + +lbl('Password:') .col-sm-9 input.form-control(type='password', ng-model='user_info.password', placeholder='Password', required, ng-keyup='action == "login" && $event.keyCode == 13 ? auth(action, user_info) : null') .details-row(ng-show='action == "register"') - label.col-sm-3.required Confirm: + +lbl('Confirm:') .col-sm-9.input-tip.has-feedback input.form-control(type='password', ng-model='user_info.confirm', placeholder='Confirm password', required, ng-keyup='$event.keyCode == 13 ? auth(action, user_info) : null') i.fa.fa-exclamation-triangle.form-control-feedback(ng-show='user_info.password != user_info.confirm' bs-tooltip data-title='Password does not match confirmation' type='button') http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0b1db97e/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 84150a1..f726bc4 100644 --- a/modules/web-control-center/nodejs/views/profile.jade +++ b/modules/web-control-center/nodejs/views/profile.jade @@ -17,32 +17,45 @@ extends templates/layout mixin lbl(txt) - label.col-sm-2.labelFormField #{txt} + label.col-sm-2.required.labelFormField #{txt} append scripts script(src='/profile-controller.js') block container - .row.greedy(ng-controller='profileController' ng-init='savedUser = #{JSON.stringify(filterUser(editableUser))}') + .row.greedy(ng-controller='profileController') .docs-content .docs-header h1 User profile hr .docs-body form.form-horizontal(name='profileForm' novalidate) - .col-sm-12 - .col-sm-8.settings-row(style='padding: 0') + .col-sm-10(style='padding: 0') + .details-row +lbl('User name:') - .col-sm-8 - input.form-control(type='text' ng-model='editableUser.username' placeholder='Input name' required) - .col-sm-8.settings-row(style='padding: 0') - +lbl('New password:') - .col-sm-8 - input.form-control(type='password', ng-model='editableUser.password' placeholder='Password' required) - .col-sm-8.settings-row(style='padding: 0') - +lbl('Confirm:') - .col-sm-8 - input.form-control(type='password', ng-model='editableUser.confirm' placeholder='Confirm' required) - .col-sm-12.settings-row + .col-sm-4 + input.form-control(type='text' ng-model='profileUser.username' placeholder='Input name' required) + .details-row + +lbl('Email:') + .col-sm-4 + input.form-control(type='email' ng-model='profileUser.email' placeholder='y...@domain.com' required) + .details-row + label + input(type="checkbox" ng-model='change_password') + | Change password + div(ng-show='change_password') + .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') + .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') + .details-row + +lbl('Confirm:') + .col-sm-4 + input.form-control(type='password', ng-model='profileUser.confirm' placeholder='Confirm' ng-required='change_password') + .col-sm-12.details-row button#save-btn.btn.btn-primary(ng-disabled='profileForm.$invalid' ng-click='saveUser()') Save