You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by an...@apache.org on 2016/02/01 10:44:37 UTC
ignite git commit: IGNITE-2481 Refactor profile.
Repository: ignite
Updated Branches:
refs/heads/ignite-843-rc2 7e3cc27ae -> 439fb31e2
IGNITE-2481 Refactor profile.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/439fb31e
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/439fb31e
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/439fb31e
Branch: refs/heads/ignite-843-rc2
Commit: 439fb31e2d78595573ac9ca88f4f28d3f8a77830
Parents: 7e3cc27
Author: Andrey <an...@gridgain.com>
Authored: Mon Feb 1 16:44:28 2016 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Mon Feb 1 16:44:28 2016 +0700
----------------------------------------------------------------------
.../main/js/controllers/profile-controller.js | 98 +++++++-------------
.../src/main/js/routes/profile.js | 56 +++++------
.../src/main/js/views/settings/profile.jade | 52 ++++++-----
3 files changed, 83 insertions(+), 123 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/439fb31e/modules/control-center-web/src/main/js/controllers/profile-controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/profile-controller.js b/modules/control-center-web/src/main/js/controllers/profile-controller.js
index b7ea353..3232897 100644
--- a/modules/control-center-web/src/main/js/controllers/profile-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/profile-controller.js
@@ -17,93 +17,61 @@
// Controller for Profile screen.
consoleModule.controller('profileController',
- ['$scope', '$http', '$common', '$focus', '$confirm', 'igniteCountries', function ($scope, $http, $common, $focus, $confirm, countries) {
- $scope.profileUser = angular.copy($scope.$root.user);
+ ['$rootScope', '$scope', '$http', '$common', '$focus', '$confirm', 'igniteCountries', function ($rootScope, $scope, $http, $common, $focus, $confirm, countries) {
+ $scope.user = angular.copy($scope.$root.user);
$scope.countries = countries;
- if ($scope.profileUser && !$scope.profileUser.token)
- $scope.profileUser.token = 'No security token. Regenerate please.';
+ if ($scope.user && !$scope.user.token)
+ $scope.user.token = 'No security token. Regenerate please.';
$scope.generateToken = function () {
$confirm.confirm('Are you sure you want to change security token?')
.then(function () {
- $scope.profileUser.token = $commonUtils.randomString(20);
+ $scope.user.token = $commonUtils.randomString(20);
})
};
- $scope.profileChanged = function () {
- var old = $scope.$root.user;
- var cur = $scope.profileUser;
+ function _profileChanged() {
+ var old = $rootScope.user;
+ var cur = $scope.user;
- return old && (old.username != cur.username || old.email != cur.email ||
- old.company != cur.company || old.country != cur.country
- || old.token != cur.token || (cur.changePassword && !$common.isEmptyString(cur.newPassword)));
+ return !_.isEqual(old, cur) || ($scope.expandedPassword && !$common.isEmptyString($scope.newPassword));
};
$scope.profileCouldBeSaved = function () {
- return $scope.profileForm.$valid && $scope.profileChanged();
+ return $scope.profileForm.$valid && _profileChanged();
};
$scope.saveBtnTipText = function () {
if (!$scope.profileForm.$valid)
return 'Invalid profile settings';
- return $scope.profileChanged() ? 'Save profile' : 'Nothing to save';
+ return _profileChanged() ? 'Save profile' : 'Nothing to save';
};
$scope.saveUser = function () {
- var profile = $scope.profileUser;
-
- if (profile) {
- var userName = profile.username;
- var changeUsername = userName != $scope.$root.user.username;
-
- var email = profile.email;
- var changeEmail = email != $scope.$root.user.email;
-
- var company = profile.company;
- var changeCompany = company != $scope.$root.user.company;
-
- var country = profile.country;
- var changeCountry = country != $scope.$root.user.country;
-
- var token = profile.token;
- var changeToken = token != $scope.$root.user.token;
-
- if (changeUsername || changeEmail || changeCompany || changeCountry || changeToken || profile.changePassword) {
- $http.post('/api/v1/profile/save', {
- _id: profile._id,
- userName: changeUsername ? userName : undefined,
- email: changeEmail ? email : undefined,
- company: changeCompany ? company : undefined,
- country: changeCountry ? country : undefined,
- token: changeToken ? token : undefined,
- newPassword: profile.changePassword ? profile.newPassword : undefined
- }).success(function (user) {
- $common.showInfo('Profile saved.');
-
- profile.changePassword = false;
- profile.newPassword = null;
- profile.confirmPassword = null;
-
- if (changeUsername)
- $scope.$root.user.username = userName;
-
- if (changeEmail)
- $scope.$root.user.email = email;
-
- if (changeCompany)
- $scope.$root.user.company = company;
-
- if (changeCountry)
- $scope.$root.user.country = country;
-
- $focus('profile-username');
- }).error(function (err) {
- $common.showError('Failed to save profile: ' + $common.errorMessage(err));
- });
- }
- }
+ var _user = angular.copy($scope.user);
+
+ if ($scope.expandedPassword)
+ _user.password = $scope.newPassword;
+
+ $http.post('/api/v1/profile/save', _user)
+ .success(function () {
+ $scope.expandedToken = false;
+
+ $scope.expandedToken = false;
+ $scope.newPassword = '';
+ $scope.confirmPassword = '';
+
+ $rootScope.user = angular.copy($scope.user);
+
+ $common.showInfo('Profile saved.');
+
+ $focus('profile-username');
+ })
+ .error(function (err) {
+ $common.showError('Failed to save profile: ' + $common.errorMessage(err));
+ });
};
}]);
http://git-wip-us.apache.org/repos/asf/ignite/blob/439fb31e/modules/control-center-web/src/main/js/routes/profile.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/routes/profile.js b/modules/control-center-web/src/main/js/routes/profile.js
index 4fa154d..ae262cc 100644
--- a/modules/control-center-web/src/main/js/routes/profile.js
+++ b/modules/control-center-web/src/main/js/routes/profile.js
@@ -15,38 +15,25 @@
* limitations under the License.
*/
+var _ = require('lodash');
+
var router = require('express').Router();
var db = require('../db');
-function _updateUser(res, user, params) {
- if (params.userName)
- user.username = params.userName;
+function _updateUser(res, params) {
+ db.Account.update({_id: params._id}, params, {upsert: true}, function (err, user) {
+ // TODO IGNITE-843 Send error to admin.
+ if (err)
+ return res.status(500).send('Failed to update profile!');
if (params.email)
user.email = params.email;
- if (params.company)
- user.company = params.company;
-
- if (params.country)
- user.country = params.country;
-
- if (params.token)
- user.token = params.token;
-
- if (params.userName || params.email || params.company || params.country || params.token || params.newPassword)
- user.save(function (err) {
- if (err)
- // TODO IGNITE-843 Send error to admin.
- return res.status(500).send('Failed to update profile!');
-
- res.json(user);
- });
- else
- res.status(200);
+ res.sendStatus(200);
+ });
}
-function _checkUserEmailAndUpdate(res, user, params) {
+function _checkEmail(res, user, params) {
if (params.email && user.email != params.email) {
db.Account.findOne({email: params.email}, function(err, userForEmail) {
// TODO send error to admin
@@ -56,11 +43,11 @@ function _checkUserEmailAndUpdate(res, user, params) {
if (userForEmail && userForEmail._id != user._id)
return res.status(500).send('User with this e-mail already registered!');
- _updateUser(res, user, params);
+ _updateUser(res, params);
});
}
else
- _updateUser(res, user, params);
+ _updateUser(res, params);
}
/**
@@ -70,25 +57,28 @@ router.post('/save', function (req, res) {
var params = req.body;
db.Account.findById(params._id, function (err, user) {
- if (err)
// TODO IGNITE-843 Send error to admin
+ if (err)
return res.status(500).send('Failed to find user!');
- if (params.newPassword) {
- var newPassword = params.newPassword;
-
- if (!newPassword || newPassword.length == 0)
+ if (params.password) {
+ if (_.isEmpty(params.password))
return res.status(500).send('Wrong value for new password!');
- user.setPassword(newPassword, function (err, user) {
+ user.setPassword(params.password, function (err, user) {
if (err)
return res.status(500).send(err.message);
- _checkUserEmailAndUpdate(res, user, params);
+ user.save(function(err) {
+ if (err)
+ return res.status(500).send("Failed to change password!");
+
+ _checkEmail(res, user, params);
+ });
});
}
else
- _checkUserEmailAndUpdate(res, user, params);
+ _checkEmail(res, user, params);
});
});
http://git-wip-us.apache.org/repos/asf/ignite/blob/439fb31e/modules/control-center-web/src/main/js/views/settings/profile.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/settings/profile.jade b/modules/control-center-web/src/main/js/views/settings/profile.jade
index 048115e..a31824d 100644
--- a/modules/control-center-web/src/main/js/views/settings/profile.jade
+++ b/modules/control-center-web/src/main/js/views/settings/profile.jade
@@ -28,43 +28,45 @@ mixin lbl(txt)
.details-row
+lbl('User name:')
.col-xs-5.col-sm-4
- input#profile-username.form-control(type='text' ng-model='profileUser.username' placeholder='Input name' required auto-focus)
+ input#profile-username.form-control(type='text' ng-model='user.username' placeholder='Input name' required auto-focus)
.details-row
+lbl('Email:')
.col-xs-5.col-sm-4
- input#profile-email.form-control(type='email' ng-model='profileUser.email' placeholder='you@domain.com' required)
+ input#profile-email.form-control(type='email' ng-model='user.email' placeholder='you@domain.com' required)
.details-row
label.col-sm-2.labelFormField Company:
.col-xs-5.col-sm-4
- input#profile-company.form-control(type='text' ng-model='profileUser.company' placeholder='You company name')
+ input#profile-company.form-control(type='text' ng-model='user.company' placeholder='You company name')
.details-row
label.col-sm-2.labelFormField Country:
.col-xs-5.col-sm-4
- button#profile-country.select-toggle.form-control(bs-select bs-options='item for item in countries' type='text' ng-model='profileUser.country' placeholder='Choose you country')
+ button#profile-country.select-toggle.form-control(bs-select bs-options='item for item in countries' type='text' ng-model='user.country' placeholder='Choose you country')
.details-row
.advanced-options
- i.fa.fa-chevron-circle-down(ng-show='profileUser.showToken' ng-click='profileUser.showToken = ! profileUser.showToken')
- i.fa.fa-chevron-circle-right(ng-show='!profileUser.showToken' ng-click='profileUser.showToken = ! profileUser.showToken')
- a(ng-click='profileUser.showToken = ! profileUser.showToken') {{profileUser.showToken ? 'Hide security token...' : 'Show security token...'}}
- .details-row(ng-show='profileUser.showToken')
- +lbl('Security token:')
- label {{profileUser.token}}
- i.tipLabel.fa.fa-refresh(ng-click='generateToken()' bs-tooltip='' data-title='Generate random security token')
- i.tipLabel.fa.fa-clipboard(ng-click-copy='{{profileUser.token}}' bs-tooltip='' data-title='Copy security token to clipboard')
- i.tipLabel.fa.fa-question-circle(ng-if=lines bs-tooltip='' data-title='The security token is used for authorization of web agent')
+ i.fa(
+ ng-click='expandedToken = !expandedToken'
+ ng-class='expandedToken ? "fa-chevron-circle-down" : "fa-chevron-circle-right"')
+ a(ng-click='expandedToken = !expandedToken') {{expandedToken ? 'Hide security token...' : 'Show security token...'}}
+ div(ng-show='expandedToken')
+ +lbl('Security token:')
+ label {{user.token}}
+ i.tipLabel.fa.fa-refresh(ng-click='generateToken()' bs-tooltip='' data-title='Generate random security token')
+ i.tipLabel.fa.fa-clipboard(ng-click-copy='{{user.token}}' bs-tooltip='' data-title='Copy security token to clipboard')
+ i.tipLabel.fa.fa-question-circle(ng-if=lines bs-tooltip='' data-title='The security token is used for authorization of web agent')
.details-row
.advanced-options
- i.fa.fa-chevron-circle-down(ng-show='profileUser.changePassword' ng-click='profileUser.changePassword = ! profileUser.changePassword')
- i.fa.fa-chevron-circle-right(ng-show='!profileUser.changePassword' ng-click='profileUser.changePassword = ! profileUser.changePassword')
- a(ng-click='profileUser.changePassword = ! profileUser.changePassword') {{profileUser.changePassword ? 'Cancel password changing...' : 'Change password...'}}
- div(ng-if='profileUser.changePassword')
- .details-row
- +lbl('New password:')
- .col-xs-5.col-sm-4
- input.form-control(type='password' ng-model='profileUser.newPassword' placeholder='New password' ng-required='profileUser.changePassword')
- .details-row
- +lbl('Confirm:')
- .col-xs-5.col-sm-4
- input.form-control(type='password' ng-model='profileUser.confirmPassword' match='profileUser.newPassword' placeholder='Confirm new password' ng-required='profileUser.changePassword')
+ i.fa(
+ ng-click='expandedPassword = !expandedPassword'
+ ng-class='expandedPassword ? "fa-chevron-circle-down" : "fa-chevron-circle-right"')
+ a(ng-click='expandedPassword = !expandedPassword') {{expandedPassword ? 'Cancel password changing...' : 'Change password...'}}
+ div(ng-show='expandedPassword')
+ .details-row
+ +lbl('New password:')
+ .col-xs-5.col-sm-4
+ input.form-control(type='password' ng-model='newPassword' placeholder='New password')
+ .details-row
+ +lbl('Confirm:')
+ .col-xs-5.col-sm-4
+ input.form-control(type='password' ng-model='confirmPassword' match='newPassword' placeholder='Confirm new password')
.col-xs-12.col-sm-12.details-row
a.btn.btn-primary(ng-disabled='!profileCouldBeSaved()' ng-click='profileCouldBeSaved() && saveUser()' bs-tooltip='' data-title='{{saveBtnTipText()}}' data-placement='bottom' data-trigger='hover') Save