From 85c122a8f34b1fe37cefefaa11e47bff039d595b Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Wed, 8 Apr 2015 14:44:18 -0700 Subject: [PATCH] GUAC-800: Add checkbox for granting/revoking permission to a user to change their own password. --- .../controllers/manageUserController.js | 70 +++++++++++++++++++ .../app/manage/templates/manageUser.html | 5 ++ .../src/main/webapp/translations/en_US.json | 1 + 3 files changed, 76 insertions(+) diff --git a/guacamole/src/main/webapp/app/manage/controllers/manageUserController.js b/guacamole/src/main/webapp/app/manage/controllers/manageUserController.js index cdc55acf1..51afe1505 100644 --- a/guacamole/src/main/webapp/app/manage/controllers/manageUserController.js +++ b/guacamole/src/main/webapp/app/manage/controllers/manageUserController.js @@ -261,6 +261,76 @@ angular.module('manage').controller('manageUserController', ['$scope', '$injecto }; + /** + * Updates the permissionsAdded and permissionsRemoved permission sets to + * reflect the addition of the given user permission. + * + * @param {String} type + * The user permission to add, as defined by + * PermissionSet.ObjectPermissionType. + * + * @param {String} identifier + * The identifier of the user affected by the permission being added. + */ + var addUserPermission = function addUserPermission(type, identifier) { + + // If permission was previously removed, simply un-remove it + if (PermissionSet.hasUserPermission(permissionsRemoved, type, identifier)) + PermissionSet.removeUserPermission(permissionsRemoved, type, identifier); + + // Otherwise, explicitly add the permission + else + PermissionSet.addUserPermission(permissionsAdded, type, identifier); + + }; + + /** + * Updates the permissionsAdded and permissionsRemoved permission sets to + * reflect the removal of the given user permission. + * + * @param {String} type + * The user permission to remove, as defined by + * PermissionSet.ObjectPermissionType. + * + * @param {String} identifier + * The identifier of the user affected by the permission being removed. + */ + var removeUserPermission = function removeUserPermission(type, identifier) { + + // If permission was previously added, simply un-add it + if (PermissionSet.hasUserPermission(permissionsAdded, type, identifier)) + PermissionSet.removeUserPermission(permissionsAdded, type, identifier); + + // Otherwise, explicitly remove the permission + else + PermissionSet.addUserPermission(permissionsRemoved, type, identifier); + + }; + + /** + * Notifies of a change to the selected user permissions for the user + * being edited. + * + * @param {String} type + * The user permission that was changed, as defined by + * PermissionSet.ObjectPermissionType. + * + * @param {String} identifier + * The identifier of the user affected by the changed permission. + */ + $scope.userPermissionChanged = function userPermissionChanged(type, identifier) { + + // Determine current permission setting + var value = $scope.permissionFlags.userPermissions[type][identifier]; + + // Add/remove permission depending on flag state + if (value) + addUserPermission(type, identifier); + else + removeUserPermission(type, identifier); + + }; + /** * Updates the permissionsAdded and permissionsRemoved permission sets to * reflect the addition of the given connection permission. diff --git a/guacamole/src/main/webapp/app/manage/templates/manageUser.html b/guacamole/src/main/webapp/app/manage/templates/manageUser.html index 188656253..e3a143af3 100644 --- a/guacamole/src/main/webapp/app/manage/templates/manageUser.html +++ b/guacamole/src/main/webapp/app/manage/templates/manageUser.html @@ -56,6 +56,11 @@ THE SOFTWARE. + + {{'MANAGE_USER.FIELD_HEADER_CHANGE_OWN_PASSWORD' | translate}} + + diff --git a/guacamole/src/main/webapp/translations/en_US.json b/guacamole/src/main/webapp/translations/en_US.json index 0b7fa7249..c5569f692 100644 --- a/guacamole/src/main/webapp/translations/en_US.json +++ b/guacamole/src/main/webapp/translations/en_US.json @@ -220,6 +220,7 @@ "ERROR_PASSWORD_MISMATCH" : "@:APP.ERROR_PASSWORD_MISMATCH", "FIELD_HEADER_ADMINISTER_SYSTEM" : "Administer system:", + "FIELD_HEADER_CHANGE_OWN_PASSWORD" : "Change own password:", "FIELD_HEADER_CREATE_NEW_USERS" : "Create new users:", "FIELD_HEADER_CREATE_NEW_CONNECTIONS" : "Create new connections:", "FIELD_HEADER_CREATE_NEW_CONNECTION_GROUPS" : "Create new connection groups:",