mirror of
				https://github.com/gyurix1968/guacamole-client.git
				synced 2025-10-31 09:03:21 +00:00 
			
		
		
		
	GUACAMOLE-220: Add JavaScript service for retrieving/manipulating user groups.
This commit is contained in:
		| @@ -60,7 +60,8 @@ angular.module('rest').factory('cacheService', ['$injector', | ||||
|     service.schema = $cacheFactory('API-SCHEMA'); | ||||
|  | ||||
|     /** | ||||
|      * Shared cache used by both userService and permissionService. | ||||
|      * Shared cache used by userService, userGroupService, permissionService, | ||||
|      * and membershipService. | ||||
|      * | ||||
|      * @type $cacheFactory.Cache | ||||
|      */ | ||||
|   | ||||
							
								
								
									
										385
									
								
								guacamole/src/main/webapp/app/rest/services/membershipService.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										385
									
								
								guacamole/src/main/webapp/app/rest/services/membershipService.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,385 @@ | ||||
| /* | ||||
|  * Licensed to the Apache Software Foundation (ASF) under one | ||||
|  * or more contributor license agreements.  See the NOTICE file | ||||
|  * distributed with this work for additional information | ||||
|  * regarding copyright ownership.  The ASF licenses this file | ||||
|  * to you under the Apache License, Version 2.0 (the | ||||
|  * "License"); you may not use this file except in compliance | ||||
|  * with the License.  You may obtain a copy of the License at | ||||
|  * | ||||
|  *   http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  * | ||||
|  * Unless required by applicable law or agreed to in writing, | ||||
|  * software distributed under the License is distributed on an | ||||
|  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||||
|  * KIND, either express or implied.  See the License for the | ||||
|  * specific language governing permissions and limitations | ||||
|  * under the License. | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * Service for operating on user group memberships via the REST API. | ||||
|  */ | ||||
| angular.module('rest').factory('membershipService', ['$injector', | ||||
|         function membershipService($injector) { | ||||
|  | ||||
|     // Required services | ||||
|     var requestService        = $injector.get('requestService'); | ||||
|     var authenticationService = $injector.get('authenticationService'); | ||||
|     var cacheService          = $injector.get('cacheService'); | ||||
|      | ||||
|     // Required types | ||||
|     var RelatedObjectPatch = $injector.get('RelatedObjectPatch'); | ||||
|  | ||||
|     var service = {}; | ||||
|  | ||||
|     /** | ||||
|      * Creates a new array of patches which represents the given changes to an | ||||
|      * arbitrary set of objects sharing some common relation. | ||||
|      * | ||||
|      * @param {String[]} [identifiersToAdd] | ||||
|      *     The identifiers of all objects which should be added to the | ||||
|      *     relation, if any. | ||||
|      * | ||||
|      * @param {String[]} [identifiersToRemove] | ||||
|      *     The identifiers of all objects which should be removed from the | ||||
|      *     relation, if any. | ||||
|      * | ||||
|      * @returns {RelatedObjectPatch[]} | ||||
|      *     A new array of patches which represents the given changes. | ||||
|      */ | ||||
|     var getRelatedObjectPatch = function getRelatedObjectPatch(identifiersToAdd, identifiersToRemove) { | ||||
|  | ||||
|         var patch = []; | ||||
|  | ||||
|         angular.forEach(identifiersToAdd, function addIdentifier(identifier) { | ||||
|             patch.push(new RelatedObjectPatch({ | ||||
|                 op    : RelatedObjectPatch.Operation.ADD, | ||||
|                 value : identifier | ||||
|             })); | ||||
|         }); | ||||
|  | ||||
|         angular.forEach(identifiersToRemove, function removeIdentifier(identifier) { | ||||
|             patch.push(new RelatedObjectPatch({ | ||||
|                 op    : RelatedObjectPatch.Operation.REMOVE, | ||||
|                 value : identifier | ||||
|             })); | ||||
|         }); | ||||
|  | ||||
|         return patch; | ||||
|  | ||||
|     }; | ||||
|  | ||||
|     /** | ||||
|      * Returns the URL for the REST resource most appropriate for accessing | ||||
|      * the parent user groups of the user or group having the given identifier. | ||||
|      * | ||||
|      * It is important to note that a particular data source can authenticate | ||||
|      * and provide user groups for a user, even if that user does not exist | ||||
|      * within that data source (and thus cannot be found beneath | ||||
|      * "api/session/data/{dataSource}/users") | ||||
|      * | ||||
|      * @param {String} dataSource | ||||
|      *     The unique identifier of the data source containing the user or | ||||
|      *     group whose parent user groups should be retrieved. This identifier | ||||
|      *     corresponds to an AuthenticationProvider within the Guacamole web | ||||
|      *     application. | ||||
|      * | ||||
|      * @param {String} identifier | ||||
|      *     The identifier of the user or group for which the URL of the proper | ||||
|      *     REST resource should be derived. | ||||
|      * | ||||
|      * @param {Boolean} [group] | ||||
|      *     Whether the provided identifier refers to a user group. If false or | ||||
|      *     omitted, the identifier given is assumed to refer to a user. | ||||
|      * | ||||
|      * @returns {String} | ||||
|      *     The URL for the REST resource representing the parent user groups of | ||||
|      *     the user or group having the given identifier. | ||||
|      */ | ||||
|     var getUserGroupsResourceURL = function getUserGroupsResourceURL(dataSource, identifier, group) { | ||||
|  | ||||
|         // Create base URL for data source | ||||
|         var base = 'api/session/data/' + encodeURIComponent(dataSource); | ||||
|  | ||||
|         // Access parent groups directly (there is no "self" for user groups | ||||
|         // as there is for users) | ||||
|         if (group) | ||||
|             return base + '/userGroups/' + encodeURIComponent(identifier) + '/userGroups'; | ||||
|  | ||||
|         // If the username is that of the current user, do not rely on the | ||||
|         // user actually existing (they may not). Access their parent groups via | ||||
|         // "self" rather than the collection of defined users. | ||||
|         if (identifier === authenticationService.getCurrentUsername()) | ||||
|             return base + '/self/userGroups'; | ||||
|  | ||||
|         // Otherwise, the user must exist for their parent groups to be | ||||
|         // accessible. Use the collection of defined users. | ||||
|         return base + '/users/' + encodeURIComponent(identifier) + '/userGroups'; | ||||
|  | ||||
|     }; | ||||
|  | ||||
|     /** | ||||
|      * Makes a request to the REST API to retrieve the identifiers of all | ||||
|      * parent user groups of which a given user or group is a member, returning | ||||
|      * a promise that can be used for processing the results of the call. | ||||
|      * | ||||
|      * @param {String} dataSource | ||||
|      *     The unique identifier of the data source containing the user or | ||||
|      *     group whose parent user groups should be retrieved. This identifier | ||||
|      *     corresponds to an AuthenticationProvider within the Guacamole web | ||||
|      *     application. | ||||
|      * | ||||
|      * @param {String} identifier | ||||
|      *     The identifier of the user or group to retrieve the parent user | ||||
|      *     groups of. | ||||
|      * | ||||
|      * @param {Boolean} [group] | ||||
|      *     Whether the provided identifier refers to a user group. If false or | ||||
|      *     omitted, the identifier given is assumed to refer to a user. | ||||
|      * | ||||
|      * @returns {Promise.<String[]>} | ||||
|      *     A promise for the HTTP call which will resolve with an array | ||||
|      *     containing the requested identifiers upon success. | ||||
|      */ | ||||
|     service.getUserGroups = function getUserGroups(dataSource, identifier, group) { | ||||
|  | ||||
|         // Build HTTP parameters set | ||||
|         var httpParameters = { | ||||
|             token : authenticationService.getCurrentToken() | ||||
|         }; | ||||
|  | ||||
|         // Retrieve parent groups | ||||
|         return requestService({ | ||||
|             cache   : cacheService.users, | ||||
|             method  : 'GET', | ||||
|             url     : getUserGroupsResourceURL(dataSource, identifier, group), | ||||
|             params  : httpParameters | ||||
|         }); | ||||
|  | ||||
|     }; | ||||
|  | ||||
|     /** | ||||
|      * Makes a request to the REST API to modify the parent user groups of | ||||
|      * which a given user or group is a member, returning a promise that can be | ||||
|      * used for processing the results of the call. | ||||
|      * | ||||
|      * @param {String} dataSource | ||||
|      *     The unique identifier of the data source containing the user or | ||||
|      *     group whose parent user groups should be modified. This identifier | ||||
|      *     corresponds to an AuthenticationProvider within the Guacamole web | ||||
|      *     application. | ||||
|      * | ||||
|      * @param {String} identifier | ||||
|      *     The identifier of the user or group to modify the parent user | ||||
|      *     groups of. | ||||
|      * | ||||
|      * @param {String[]} [addToUserGroups] | ||||
|      *     The identifier of all parent user groups to which the given user or | ||||
|      *     group should be added as a member, if any. | ||||
|      * | ||||
|      * @param {String[]} [removeFromUserGroups] | ||||
|      *     The identifier of all parent user groups from which the given member | ||||
|      *     user or group should be removed, if any. | ||||
|      * | ||||
|      * @param {Boolean} [group] | ||||
|      *     Whether the provided identifier refers to a user group. If false or | ||||
|      *     omitted, the identifier given is assumed to refer to a user. | ||||
|      * | ||||
|      * @returns {Promise} | ||||
|      *     A promise for the HTTP call which will succeed if and only if the | ||||
|      *     patch operation is successful. | ||||
|      */ | ||||
|     service.patchUserGroups = function patchUserGroups(dataSource, identifier, | ||||
|             addToUserGroups, removeFromUserGroups, group) { | ||||
|  | ||||
|         // Build HTTP parameters set | ||||
|         var httpParameters = { | ||||
|             token : authenticationService.getCurrentToken() | ||||
|         }; | ||||
|  | ||||
|         // Update parent user groups | ||||
|         return requestService({ | ||||
|             method  : 'PATCH', | ||||
|             url     : getUserGroupsResourceURL(dataSource, identifier, group), | ||||
|             params  : httpParameters, | ||||
|             data    : getRelatedObjectPatch(addToUserGroups, removeFromUserGroups) | ||||
|         }) | ||||
|  | ||||
|         // Clear the cache | ||||
|         .then(function parentUserGroupsChanged(){ | ||||
|             cacheService.users.removeAll(); | ||||
|         }); | ||||
|  | ||||
|     }; | ||||
|  | ||||
|     /** | ||||
|      * Makes a request to the REST API to retrieve the identifiers of all | ||||
|      * users which are members of the given user group, returning a promise | ||||
|      * that can be used for processing the results of the call. | ||||
|      * | ||||
|      * @param {String} dataSource | ||||
|      *     The unique identifier of the data source containing the user group | ||||
|      *     whose member users should be retrieved. This identifier corresponds | ||||
|      *     to an AuthenticationProvider within the Guacamole web application. | ||||
|      * | ||||
|      * @param {String} identifier | ||||
|      *     The identifier of the user group to retrieve the member users of. | ||||
|      * | ||||
|      * @returns {Promise.<String[]>} | ||||
|      *     A promise for the HTTP call which will resolve with an array | ||||
|      *     containing the requested identifiers upon success. | ||||
|      */ | ||||
|     service.getMemberUsers = function getMemberUsers(dataSource, identifier) { | ||||
|  | ||||
|         // Build HTTP parameters set | ||||
|         var httpParameters = { | ||||
|             token : authenticationService.getCurrentToken() | ||||
|         }; | ||||
|  | ||||
|         // Retrieve member users | ||||
|         return requestService({ | ||||
|             cache   : cacheService.users, | ||||
|             method  : 'GET', | ||||
|             url     : 'api/session/data/' + encodeURIComponent(dataSource) + '/userGroups/' + encodeURIComponent(identifier) + '/memberUsers', | ||||
|             params  : httpParameters | ||||
|         }); | ||||
|  | ||||
|     }; | ||||
|  | ||||
|     /** | ||||
|      * Makes a request to the REST API to modify the member users of a given | ||||
|      * user group, returning a promise that can be used for processing the | ||||
|      * results of the call. | ||||
|      * | ||||
|      * @param {String} dataSource | ||||
|      *     The unique identifier of the data source containing the user group | ||||
|      *     whose member users should be modified. This identifier corresponds | ||||
|      *     to an AuthenticationProvider within the Guacamole web application. | ||||
|      * | ||||
|      * @param {String} identifier | ||||
|      *     The identifier of the user group to modify the member users of. | ||||
|      * | ||||
|      * @param {String[]} [usersToAdd] | ||||
|      *     The identifier of all users to add as members of the given user | ||||
|      *     group, if any. | ||||
|      * | ||||
|      * @param {String[]} [usersToRemove] | ||||
|      *     The identifier of all users to remove from the given user group, | ||||
|      *     if any. | ||||
|      * | ||||
|      * @returns {Promise} | ||||
|      *     A promise for the HTTP call which will succeed if and only if the | ||||
|      *     patch operation is successful. | ||||
|      */ | ||||
|     service.patchMemberUsers = function patchMemberUsers(dataSource, identifier, | ||||
|             usersToAdd, usersToRemove) { | ||||
|  | ||||
|         // Build HTTP parameters set | ||||
|         var httpParameters = { | ||||
|             token : authenticationService.getCurrentToken() | ||||
|         }; | ||||
|  | ||||
|         // Update member users | ||||
|         return requestService({ | ||||
|             method  : 'PATCH', | ||||
|             url     : 'api/session/data/' + encodeURIComponent(dataSource) + '/userGroups/' + encodeURIComponent(identifier) + '/memberUsers', | ||||
|             params  : httpParameters, | ||||
|             data    : getRelatedObjectPatch(usersToAdd, usersToRemove) | ||||
|         }) | ||||
|  | ||||
|         // Clear the cache | ||||
|         .then(function memberUsersChanged(){ | ||||
|             cacheService.users.removeAll(); | ||||
|         }); | ||||
|  | ||||
|     }; | ||||
|  | ||||
|     /** | ||||
|      * Makes a request to the REST API to retrieve the identifiers of all | ||||
|      * user groups which are members of the given user group, returning a | ||||
|      * promise that can be used for processing the results of the call. | ||||
|      * | ||||
|      * @param {String} dataSource | ||||
|      *     The unique identifier of the data source containing the user group | ||||
|      *     whose member user groups should be retrieved. This identifier | ||||
|      *     corresponds to an AuthenticationProvider within the Guacamole web | ||||
|      *     application. | ||||
|      * | ||||
|      * @param {String} identifier | ||||
|      *     The identifier of the user group to retrieve the member user | ||||
|      *     groups of. | ||||
|      * | ||||
|      * @returns {Promise.<String[]>} | ||||
|      *     A promise for the HTTP call which will resolve with an array | ||||
|      *     containing the requested identifiers upon success. | ||||
|      */ | ||||
|     service.getMemberUserGroups = function getMemberUserGroups(dataSource, identifier) { | ||||
|  | ||||
|         // Build HTTP parameters set | ||||
|         var httpParameters = { | ||||
|             token : authenticationService.getCurrentToken() | ||||
|         }; | ||||
|  | ||||
|         // Retrieve member user groups | ||||
|         return requestService({ | ||||
|             cache   : cacheService.users, | ||||
|             method  : 'GET', | ||||
|             url     : 'api/session/data/' + encodeURIComponent(dataSource) + '/userGroups/' + encodeURIComponent(identifier) + '/memberUserGroups', | ||||
|             params  : httpParameters | ||||
|         }); | ||||
|  | ||||
|     }; | ||||
|  | ||||
|     /** | ||||
|      * Makes a request to the REST API to modify the member user groups of a | ||||
|      * given user group, returning a promise that can be used for processing | ||||
|      * the results of the call. | ||||
|      * | ||||
|      * @param {String} dataSource | ||||
|      *     The unique identifier of the data source containing the user group | ||||
|      *     whose member user groups should be modified. This identifier | ||||
|      *     corresponds to an AuthenticationProvider within the Guacamole web | ||||
|      *     application. | ||||
|      * | ||||
|      * @param {String} identifier | ||||
|      *     The identifier of the user group to modify the member user groups of. | ||||
|      * | ||||
|      * @param {String[]} [userGroupsToAdd] | ||||
|      *     The identifier of all user groups to add as members of the given | ||||
|      *     user group, if any. | ||||
|      * | ||||
|      * @param {String[]} [userGroupsToRemove] | ||||
|      *     The identifier of all member user groups to remove from the given | ||||
|      *     user group, if any. | ||||
|      * | ||||
|      * @returns {Promise} | ||||
|      *     A promise for the HTTP call which will succeed if and only if the | ||||
|      *     patch operation is successful. | ||||
|      */ | ||||
|     service.patchMemberUserGroups = function patchMemberUserGroups(dataSource, | ||||
|             identifier, userGroupsToAdd, userGroupsToRemove) { | ||||
|  | ||||
|         // Build HTTP parameters set | ||||
|         var httpParameters = { | ||||
|             token : authenticationService.getCurrentToken() | ||||
|         }; | ||||
|  | ||||
|         // Update member user groups | ||||
|         return requestService({ | ||||
|             method  : 'PATCH', | ||||
|             url     : 'api/session/data/' + encodeURIComponent(dataSource) + '/userGroups/' + encodeURIComponent(identifier) + '/memberUserGroups', | ||||
|             params  : httpParameters, | ||||
|             data    : getRelatedObjectPatch(userGroupsToAdd, userGroupsToRemove) | ||||
|         }) | ||||
|  | ||||
|         // Clear the cache | ||||
|         .then(function memberUserGroupsChanged(){ | ||||
|             cacheService.users.removeAll(); | ||||
|         }); | ||||
|  | ||||
|     }; | ||||
|      | ||||
|     return service; | ||||
|  | ||||
| }]); | ||||
							
								
								
									
										223
									
								
								guacamole/src/main/webapp/app/rest/services/userGroupService.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										223
									
								
								guacamole/src/main/webapp/app/rest/services/userGroupService.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,223 @@ | ||||
| /* | ||||
|  * Licensed to the Apache Software Foundation (ASF) under one | ||||
|  * or more contributor license agreements.  See the NOTICE file | ||||
|  * distributed with this work for additional information | ||||
|  * regarding copyright ownership.  The ASF licenses this file | ||||
|  * to you under the Apache License, Version 2.0 (the | ||||
|  * "License"); you may not use this file except in compliance | ||||
|  * with the License.  You may obtain a copy of the License at | ||||
|  * | ||||
|  *   http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  * | ||||
|  * Unless required by applicable law or agreed to in writing, | ||||
|  * software distributed under the License is distributed on an | ||||
|  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||||
|  * KIND, either express or implied.  See the License for the | ||||
|  * specific language governing permissions and limitations | ||||
|  * under the License. | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * Service for operating on user groups via the REST API. | ||||
|  */ | ||||
| angular.module('rest').factory('userGroupService', ['$injector', | ||||
|         function userGroupService($injector) { | ||||
|  | ||||
|     // Required services | ||||
|     var requestService        = $injector.get('requestService'); | ||||
|     var authenticationService = $injector.get('authenticationService'); | ||||
|     var cacheService          = $injector.get('cacheService'); | ||||
|  | ||||
|     var service = {}; | ||||
|  | ||||
|     /** | ||||
|      * Makes a request to the REST API to get the list of user groups, | ||||
|      * returning a promise that provides an array of @link{UserGroup} objects if | ||||
|      * successful. | ||||
|      * | ||||
|      * @param {String} dataSource | ||||
|      *     The unique identifier of the data source containing the user groups | ||||
|      *     to be retrieved. This identifier corresponds to an | ||||
|      *     AuthenticationProvider within the Guacamole web application. | ||||
|      * | ||||
|      * @param {String[]} [permissionTypes] | ||||
|      *     The set of permissions to filter with. A user group must have one or | ||||
|      *     more of these permissions for a user group to appear in the result. | ||||
|      *     If null, no filtering will be performed. Valid values are listed | ||||
|      *     within PermissionSet.ObjectType. | ||||
|      * | ||||
|      * @returns {Promise.<Object.<String, UserGroup>>} | ||||
|      *     A promise which will resolve with a map of @link{UserGroup} objects | ||||
|      *     where each key is the identifier of the corresponding user group. | ||||
|      */ | ||||
|     service.getUserGroups = function getUserGroups(dataSource, permissionTypes) { | ||||
|  | ||||
|         // Build HTTP parameters set | ||||
|         var httpParameters = { | ||||
|             token : authenticationService.getCurrentToken() | ||||
|         }; | ||||
|  | ||||
|         // Add permission filter if specified | ||||
|         if (permissionTypes) | ||||
|             httpParameters.permission = permissionTypes; | ||||
|  | ||||
|         // Retrieve user groups | ||||
|         return requestService({ | ||||
|             cache   : cacheService.users, | ||||
|             method  : 'GET', | ||||
|             url     : 'api/session/data/' + encodeURIComponent(dataSource) + '/userGroups', | ||||
|             params  : httpParameters | ||||
|         }); | ||||
|  | ||||
|     }; | ||||
|  | ||||
|     /** | ||||
|      * Makes a request to the REST API to get the user group having the given | ||||
|      * identifier, returning a promise that provides the corresponding | ||||
|      * @link{UserGroup} if successful. | ||||
|      * | ||||
|      * @param {String} dataSource | ||||
|      *     The unique identifier of the data source containing the user group to | ||||
|      *     be retrieved. This identifier corresponds to an | ||||
|      *     AuthenticationProvider within the Guacamole web application. | ||||
|      * | ||||
|      * @param {String} identifier | ||||
|      *     The identifier of the user group to retrieve. | ||||
|      * | ||||
|      * @returns {Promise.<UserGroup>} | ||||
|      *     A promise which will resolve with a @link{UserGroup} upon success. | ||||
|      */ | ||||
|     service.getUserGroup = function getUserGroup(dataSource, identifier) { | ||||
|  | ||||
|         // Build HTTP parameters set | ||||
|         var httpParameters = { | ||||
|             token : authenticationService.getCurrentToken() | ||||
|         }; | ||||
|  | ||||
|         // Retrieve user group | ||||
|         return requestService({ | ||||
|             cache   : cacheService.users, | ||||
|             method  : 'GET', | ||||
|             url     : 'api/session/data/' + encodeURIComponent(dataSource) + '/userGroups/' + encodeURIComponent(identifier), | ||||
|             params  : httpParameters | ||||
|         }); | ||||
|  | ||||
|     }; | ||||
|  | ||||
|     /** | ||||
|      * Makes a request to the REST API to delete a user group, returning a | ||||
|      * promise that can be used for processing the results of the call. | ||||
|      * | ||||
|      * @param {String} dataSource | ||||
|      *     The unique identifier of the data source containing the user group to | ||||
|      *     be deleted. This identifier corresponds to an AuthenticationProvider | ||||
|      *     within the Guacamole web application. | ||||
|      * | ||||
|      * @param {UserGroup} userGroup | ||||
|      *     The user group to delete. | ||||
|      * | ||||
|      * @returns {Promise} | ||||
|      *     A promise for the HTTP call which will succeed if and only if the | ||||
|      *     delete operation is successful. | ||||
|      */ | ||||
|     service.deleteUserGroup = function deleteUserGroup(dataSource, userGroup) { | ||||
|  | ||||
|         // Build HTTP parameters set | ||||
|         var httpParameters = { | ||||
|             token : authenticationService.getCurrentToken() | ||||
|         }; | ||||
|  | ||||
|         // Delete user group | ||||
|         return requestService({ | ||||
|             method  : 'DELETE', | ||||
|             url     : 'api/session/data/' + encodeURIComponent(dataSource) + '/userGroups/' + encodeURIComponent(userGroup.identifier), | ||||
|             params  : httpParameters | ||||
|         }) | ||||
|  | ||||
|         // Clear the cache | ||||
|         .then(function userGroupDeleted(){ | ||||
|             cacheService.users.removeAll(); | ||||
|         }); | ||||
|  | ||||
|  | ||||
|     }; | ||||
|  | ||||
|     /** | ||||
|      * Makes a request to the REST API to create a user group, returning a promise | ||||
|      * that can be used for processing the results of the call. | ||||
|      * | ||||
|      * @param {String} dataSource | ||||
|      *     The unique identifier of the data source in which the user group | ||||
|      *     should be created. This identifier corresponds to an | ||||
|      *     AuthenticationProvider within the Guacamole web application. | ||||
|      * | ||||
|      * @param {UserGroup} userGroup | ||||
|      *     The user group to create. | ||||
|      * | ||||
|      * @returns {Promise} | ||||
|      *     A promise for the HTTP call which will succeed if and only if the | ||||
|      *     create operation is successful. | ||||
|      */ | ||||
|     service.createUserGroup = function createUserGroup(dataSource, userGroup) { | ||||
|  | ||||
|         // Build HTTP parameters set | ||||
|         var httpParameters = { | ||||
|             token : authenticationService.getCurrentToken() | ||||
|         }; | ||||
|  | ||||
|         // Create user group | ||||
|         return requestService({ | ||||
|             method  : 'POST', | ||||
|             url     : 'api/session/data/' + encodeURIComponent(dataSource) + '/userGroups', | ||||
|             params  : httpParameters, | ||||
|             data    : userGroup | ||||
|         }) | ||||
|  | ||||
|         // Clear the cache | ||||
|         .then(function userGroupCreated(){ | ||||
|             cacheService.users.removeAll(); | ||||
|         }); | ||||
|  | ||||
|     }; | ||||
|  | ||||
|     /** | ||||
|      * Makes a request to the REST API to save a user group, returning a | ||||
|      * promise that can be used for processing the results of the call. | ||||
|      * | ||||
|      * @param {String} dataSource | ||||
|      *     The unique identifier of the data source containing the user group to | ||||
|      *     be updated. This identifier corresponds to an AuthenticationProvider | ||||
|      *     within the Guacamole web application. | ||||
|      * | ||||
|      * @param {UserGroup} userGroup | ||||
|      *     The user group to update. | ||||
|      * | ||||
|      * @returns {Promise} | ||||
|      *     A promise for the HTTP call which will succeed if and only if the | ||||
|      *     save operation is successful. | ||||
|      */ | ||||
|     service.saveUserGroup = function saveUserGroup(dataSource, userGroup) { | ||||
|  | ||||
|         // Build HTTP parameters set | ||||
|         var httpParameters = { | ||||
|             token : authenticationService.getCurrentToken() | ||||
|         }; | ||||
|  | ||||
|         // Update user group | ||||
|         return requestService({ | ||||
|             method  : 'PUT', | ||||
|             url     : 'api/session/data/' + encodeURIComponent(dataSource) + '/userGroups/' + encodeURIComponent(userGroup.identifier), | ||||
|             params  : httpParameters, | ||||
|             data    : userGroup | ||||
|         }) | ||||
|  | ||||
|         // Clear the cache | ||||
|         .then(function userGroupUpdated(){ | ||||
|             cacheService.users.removeAll(); | ||||
|         }); | ||||
|  | ||||
|     }; | ||||
|  | ||||
|     return service; | ||||
|  | ||||
| }]); | ||||
| @@ -0,0 +1,85 @@ | ||||
| /* | ||||
|  * Licensed to the Apache Software Foundation (ASF) under one | ||||
|  * or more contributor license agreements.  See the NOTICE file | ||||
|  * distributed with this work for additional information | ||||
|  * regarding copyright ownership.  The ASF licenses this file | ||||
|  * to you under the Apache License, Version 2.0 (the | ||||
|  * "License"); you may not use this file except in compliance | ||||
|  * with the License.  You may obtain a copy of the License at | ||||
|  * | ||||
|  *   http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  * | ||||
|  * Unless required by applicable law or agreed to in writing, | ||||
|  * software distributed under the License is distributed on an | ||||
|  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||||
|  * KIND, either express or implied.  See the License for the | ||||
|  * specific language governing permissions and limitations | ||||
|  * under the License. | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * Service which defines the RelatedObjectPatch class. | ||||
|  */ | ||||
| angular.module('rest').factory('RelatedObjectPatch', [function defineRelatedObjectPatch() { | ||||
|              | ||||
|     /** | ||||
|      * The object returned by REST API calls when representing changes to an | ||||
|      * arbitrary set of objects which share some common relation. | ||||
|      *  | ||||
|      * @constructor | ||||
|      * @param {RelatedObjectPatch|Object} [template={}] | ||||
|      *     The object whose properties should be copied within the new | ||||
|      *     RelatedObjectPatch. | ||||
|      */ | ||||
|     var RelatedObjectPatch = function RelatedObjectPatch(template) { | ||||
|  | ||||
|         // Use empty object by default | ||||
|         template = template || {}; | ||||
|  | ||||
|         /** | ||||
|          * The operation to apply to the objects indicated by the path. Valid | ||||
|          * operation values are defined within RelatedObjectPatch.Operation. | ||||
|          * | ||||
|          * @type String | ||||
|          */ | ||||
|         this.op = template.op; | ||||
|  | ||||
|         /** | ||||
|          * The path of the objects to modify. This will always be "/". | ||||
|          * | ||||
|          * @type String | ||||
|          * @default '/' | ||||
|          */ | ||||
|         this.path = template.path || '/'; | ||||
|  | ||||
|         /** | ||||
|          * The identifier of the object being added or removed from the | ||||
|          * relation. | ||||
|          * | ||||
|          * @type String | ||||
|          */ | ||||
|         this.value = template.value; | ||||
|  | ||||
|     }; | ||||
|  | ||||
|     /** | ||||
|      * All valid patch operations for objects sharing some common relation. | ||||
|      * Currently, only add and remove are supported. | ||||
|      */ | ||||
|     RelatedObjectPatch.Operation = { | ||||
|  | ||||
|         /** | ||||
|          * Adds the specified object to the relation. | ||||
|          */ | ||||
|         ADD : "add", | ||||
|  | ||||
|         /** | ||||
|          * Removes the specified object from the relation. | ||||
|          */ | ||||
|         REMOVE : "remove" | ||||
|  | ||||
|     }; | ||||
|  | ||||
|     return RelatedObjectPatch; | ||||
|  | ||||
| }]); | ||||
							
								
								
									
										59
									
								
								guacamole/src/main/webapp/app/rest/types/UserGroup.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								guacamole/src/main/webapp/app/rest/types/UserGroup.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,59 @@ | ||||
| /* | ||||
|  * Licensed to the Apache Software Foundation (ASF) under one | ||||
|  * or more contributor license agreements.  See the NOTICE file | ||||
|  * distributed with this work for additional information | ||||
|  * regarding copyright ownership.  The ASF licenses this file | ||||
|  * to you under the Apache License, Version 2.0 (the | ||||
|  * "License"); you may not use this file except in compliance | ||||
|  * with the License.  You may obtain a copy of the License at | ||||
|  * | ||||
|  *   http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  * | ||||
|  * Unless required by applicable law or agreed to in writing, | ||||
|  * software distributed under the License is distributed on an | ||||
|  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||||
|  * KIND, either express or implied.  See the License for the | ||||
|  * specific language governing permissions and limitations | ||||
|  * under the License. | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * Service which defines the UserGroup class. | ||||
|  */ | ||||
| angular.module('rest').factory('UserGroup', [function defineUserGroup() { | ||||
|  | ||||
|     /** | ||||
|      * The object returned by REST API calls when representing the data | ||||
|      * associated with a user group. | ||||
|      * | ||||
|      * @constructor | ||||
|      * @param {UserGroup|Object} [template={}] | ||||
|      *     The object whose properties should be copied within the new | ||||
|      *     UserGroup. | ||||
|      */ | ||||
|     var UserGroup = function UserGroup(template) { | ||||
|  | ||||
|         // Use empty object by default | ||||
|         template = template || {}; | ||||
|  | ||||
|         /** | ||||
|          * The name which uniquely identifies this user group. | ||||
|          * | ||||
|          * @type String | ||||
|          */ | ||||
|         this.identifier = template.identifier; | ||||
|  | ||||
|         /** | ||||
|          * Arbitrary name/value pairs which further describe this user group. | ||||
|          * The semantics and validity of these attributes are dictated by the | ||||
|          * extension which defines them. | ||||
|          * | ||||
|          * @type Object.<String, String> | ||||
|          */ | ||||
|         this.attributes = {}; | ||||
|  | ||||
|     }; | ||||
|  | ||||
|     return UserGroup; | ||||
|  | ||||
| }]); | ||||
		Reference in New Issue
	
	Block a user