mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-09 14:41:21 +00:00
GUAC-932: Remove filtering user service. Add permission filtering support to user retrieval endpoint.
This commit is contained in:
@@ -25,15 +25,17 @@
|
||||
*/
|
||||
angular.module('manage').controller('manageController', ['$scope', '$injector',
|
||||
function manageController($scope, $injector) {
|
||||
|
||||
// Get the dependencies commonJS style
|
||||
|
||||
// Required types
|
||||
var Permission = $injector.get('Permission');
|
||||
|
||||
// Required services
|
||||
var legacyConnectionGroupService = $injector.get('legacyConnectionGroupService');
|
||||
var connectionEditModal = $injector.get('connectionEditModal');
|
||||
var connectionGroupEditModal = $injector.get('connectionGroupEditModal');
|
||||
var userEditModal = $injector.get('userEditModal');
|
||||
var protocolService = $injector.get('protocolService');
|
||||
var userService = $injector.get('userService');
|
||||
var legacyUserService = $injector.get('legacyUserService');
|
||||
var protocolService = $injector.get('protocolService');
|
||||
var userService = $injector.get('userService');
|
||||
|
||||
// Set status to loading until we have all the connections, groups, and users have loaded
|
||||
$scope.loadingUsers = true;
|
||||
@@ -64,21 +66,13 @@ angular.module('manage').controller('manageController', ['$scope', '$injector',
|
||||
|
||||
$scope.loadingConnections = false;
|
||||
});
|
||||
|
||||
userService.getUsers().success(function filterEditableUsers(users) {
|
||||
|
||||
// Retrieve all users for whom we have UPDATE permission
|
||||
userService.getUsers(Permission.Type.UPDATE).success(function usersReceived(users) {
|
||||
$scope.users = users;
|
||||
|
||||
// Filter the users to only include ones that we have UPDATE for
|
||||
if(!$scope.currentUserIsAdmin) {
|
||||
legacyUserService.filterUsersByPermission(
|
||||
$scope.users,
|
||||
$scope.currentUserPermissions,
|
||||
'UPDATE'
|
||||
);
|
||||
}
|
||||
|
||||
$scope.loadingUsers = false;
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
/**
|
||||
|
@@ -1,57 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2014 Glyptodon LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* A service for performing useful user related functionaltiy.
|
||||
*/
|
||||
angular.module('rest').factory('legacyUserService', ['$injector', function legacyUserService($injector) {
|
||||
|
||||
var permissionCheckService = $injector.get('permissionCheckService');
|
||||
|
||||
var service = {};
|
||||
|
||||
/**
|
||||
* Filters the list of users using the provided permissions.
|
||||
*
|
||||
* @param {array} users The user list.
|
||||
*
|
||||
* @param {object} permissionList The list of permissions to use
|
||||
* when filtering.
|
||||
*
|
||||
* @param {object} permissionCriteria The required permission for each user.
|
||||
*
|
||||
* @return {array} The filtered list.
|
||||
*/
|
||||
service.filterUsersByPermission = function filterUsersByPermission(users, permissionList, permissionCriteria) {
|
||||
for(var i = 0; i < users.length; i++) {
|
||||
if(!permissionCheckService.checkPermission(permissionList,
|
||||
"USER", user.username, permissionCriteria)) {
|
||||
items.splice(i, 1);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
return users;
|
||||
};
|
||||
|
||||
return service;
|
||||
}]);
|
@@ -33,21 +33,42 @@ angular.module('rest').factory('userService', ['$http', 'authenticationService',
|
||||
* returning a promise that provides an array of @link{User} objects if
|
||||
* successful.
|
||||
*
|
||||
* @param {String} [permissionType]
|
||||
* The permission type string of the permission that the current user
|
||||
* must have for a given user to appear within the list. Valid values
|
||||
* are listed within Permission.Type.
|
||||
*
|
||||
* @returns {Promise.<User[]>}
|
||||
* A promise which will resolve with an array of @link{User} objects
|
||||
* upon success.
|
||||
*/
|
||||
service.getUsers = function getUsers() {
|
||||
return $http.get("api/user?token=" + authenticationService.getCurrentToken());
|
||||
service.getUsers = function getUsers(permissionType) {
|
||||
|
||||
// Build HTTP parameters set
|
||||
var httpParameters = {
|
||||
token : authenticationService.getCurrentToken()
|
||||
};
|
||||
|
||||
// Add permission filter if specified
|
||||
if (permissionType)
|
||||
httpParameters.permission = permissionType;
|
||||
|
||||
// Retrieve users
|
||||
return $http({
|
||||
method : 'GET',
|
||||
url : 'api/user',
|
||||
params : httpParameters
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Makes a request to the REST API to get the user having the given ID,
|
||||
* returning a promise that provides the corresponding @link{User} if
|
||||
* successful.
|
||||
*
|
||||
* @param {String} userID The ID of the user to retrieve.
|
||||
*
|
||||
*
|
||||
* @returns {Promise.<User>}
|
||||
* A promise which will resolve with a @link{User} upon success.
|
||||
*/
|
||||
|
Reference in New Issue
Block a user