Repository: ambari Updated Branches: refs/heads/trunk 978cc64e2 -> b6cb758b5
AMBARI-17278. Unable to delete permission with type VIEW (akovalenko) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/b6cb758b Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/b6cb758b Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/b6cb758b Branch: refs/heads/trunk Commit: b6cb758b54c00986cd58d8e39ca594ab737c6fc1 Parents: 978cc64 Author: Aleksandr Kovalenko <akovale...@hortonworks.com> Authored: Fri Jun 17 13:35:35 2016 +0300 Committer: Aleksandr Kovalenko <akovale...@hortonworks.com> Committed: Fri Jun 17 13:35:35 2016 +0300 ---------------------------------------------------------------------- .../controllers/groups/GroupsEditCtrl.js | 38 ++++++---- .../scripts/controllers/users/UsersShowCtrl.js | 38 ++++++---- .../app/scripts/services/PermissionsSaver.js | 77 -------------------- .../ui/admin-web/app/scripts/services/View.js | 7 +- 4 files changed, 49 insertions(+), 111 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/b6cb758b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsEditCtrl.js ---------------------------------------------------------------------- diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsEditCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsEditCtrl.js index 68bf3e5..2e7830b 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsEditCtrl.js +++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsEditCtrl.js @@ -18,7 +18,7 @@ 'use strict'; angular.module('ambariAdminConsole') -.controller('GroupsEditCtrl',['$scope', 'Group', '$routeParams', 'Cluster', 'Alert', 'ConfirmationModal', '$location', '$translate', function($scope, Group, $routeParams, Cluster, Alert, ConfirmationModal, $location, $translate) { +.controller('GroupsEditCtrl',['$scope', 'Group', '$routeParams', 'Cluster', 'View', 'Alert', 'ConfirmationModal', '$location', '$translate', function($scope, Group, $routeParams, Cluster, View, Alert, ConfirmationModal, $location, $translate) { var $t = $translate.instant; $scope.constants = { group: $t('common.group'), @@ -92,26 +92,36 @@ angular.module('ambariAdminConsole') nameFilter : group.group_name, typeFilter : {value: 'GROUP'} }).then(function(data) { - var deleteCallback = function () { - group.destroy().then(function() { - $location.path('/groups'); - }); - }; - var privilegesIds = []; + var clusterPrivilegesIds = []; + var viewsPrivileges = []; if (data.items && data.items.length) { angular.forEach(data.items[0].privileges, function(privilege) { if (privilege.PrivilegeInfo.principal_type === 'GROUP') { - privilegesIds.push(privilege.PrivilegeInfo.privilege_id); + if (privilege.PrivilegeInfo.type === 'VIEW') { + viewsPrivileges.push({ + id: privilege.PrivilegeInfo.privilege_id, + view_name: privilege.PrivilegeInfo.view_name, + version: privilege.PrivilegeInfo.version, + instance_name: privilege.PrivilegeInfo.instance_name + }); + } else { + clusterPrivilegesIds.push(privilege.PrivilegeInfo.privilege_id); + } } }); } - if (privilegesIds.length) { - Cluster.deleteMultiplePrivileges($routeParams.id, privilegesIds).then(function() { - deleteCallback(); + group.destroy().then(function() { + $location.path('/groups'); + if (clusterPrivilegesIds.length) { + Cluster.getAllClusters().then(function (clusters) { + var clusterName = clusters[0].Clusters.cluster_name; + Cluster.deleteMultiplePrivileges(clusterName, clusterPrivilegesIds); + }); + } + angular.forEach(viewsPrivileges, function(privilege) { + View.deletePrivilege(privilege); }); - } else { - deleteCallback(); - } + }); }); }); }; http://git-wip-us.apache.org/repos/asf/ambari/blob/b6cb758b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersShowCtrl.js ---------------------------------------------------------------------- diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersShowCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersShowCtrl.js index f2c2467..3beb42a 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersShowCtrl.js +++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersShowCtrl.js @@ -18,7 +18,7 @@ 'use strict'; angular.module('ambariAdminConsole') -.controller('UsersShowCtrl', ['$scope', '$routeParams', 'Cluster', 'User', '$modal', '$location', 'ConfirmationModal', 'Alert', 'Auth', 'getDifference', 'Group', '$q', '$translate', function($scope, $routeParams, Cluster, User, $modal, $location, ConfirmationModal, Alert, Auth, getDifference, Group, $q, $translate) { +.controller('UsersShowCtrl', ['$scope', '$routeParams', 'Cluster', 'User', 'View', '$modal', '$location', 'ConfirmationModal', 'Alert', 'Auth', 'getDifference', 'Group', '$q', '$translate', function($scope, $routeParams, Cluster, User, View, $modal, $location, ConfirmationModal, Alert, Auth, getDifference, Group, $q, $translate) { var $t = $translate.instant; @@ -183,26 +183,36 @@ angular.module('ambariAdminConsole') nameFilter : $scope.user.user_name, typeFilter : {value: 'USER'} }).then(function(data) { - var privilegesIds = []; - var deleteCallback = function () { - User.delete($scope.user.user_name).then(function() { - $location.path('/users'); - }); - }; + var clusterPrivilegesIds = []; + var viewsPrivileges = []; if (data.items && data.items.length) { angular.forEach(data.items[0].privileges, function(privilege) { if (privilege.PrivilegeInfo.principal_type === 'USER') { - privilegesIds.push(privilege.PrivilegeInfo.privilege_id); + if (privilege.PrivilegeInfo.type === 'VIEW') { + viewsPrivileges.push({ + id: privilege.PrivilegeInfo.privilege_id, + view_name: privilege.PrivilegeInfo.view_name, + version: privilege.PrivilegeInfo.version, + instance_name: privilege.PrivilegeInfo.instance_name + }); + } else { + clusterPrivilegesIds.push(privilege.PrivilegeInfo.privilege_id); + } } }); } - if (privilegesIds.length) { - Cluster.deleteMultiplePrivileges($routeParams.id, privilegesIds).then(function() { - deleteCallback(); + User.delete($scope.user.user_name).then(function() { + $location.path('/users'); + if (clusterPrivilegesIds.length) { + Cluster.getAllClusters().then(function (clusters) { + var clusterName = clusters[0].Clusters.cluster_name; + Cluster.deleteMultiplePrivileges(clusterName, clusterPrivilegesIds); + }); + } + angular.forEach(viewsPrivileges, function(privilege) { + View.deletePrivilege(privilege); }); - } else { - deleteCallback(); - } + }); }); }); }; http://git-wip-us.apache.org/repos/asf/ambari/blob/b6cb758b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/PermissionsSaver.js ---------------------------------------------------------------------- diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/PermissionsSaver.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/PermissionsSaver.js index bc53dad..c7b9295 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/PermissionsSaver.js +++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/PermissionsSaver.js @@ -73,83 +73,6 @@ angular.module('ambariAdminConsole') } return resource.updatePrivileges(params, arr); } - - function savePermissionsForOld(resource, oldPermissions, newPermissions, params){ - var deferred = $q.defer(); - - var addArr = []; - var delArr = []; - angular.forEach(newPermissions, function(permission) { - // Sanitize input - var users = permission.USER.toString().split(',').filter(function(item) {return item.trim();}).map(function(item) {return item.trim()}); - var groups = permission.GROUP.toString().split(',').filter(function(item) {return item.trim();}).map(function(item) {return item.trim()}); - - var userObj = getDifference(angular.copy(oldPermissions[permission.PermissionInfo.permission_name].USER) , users); - var groupObj = getDifference(angular.copy(oldPermissions[permission.PermissionInfo.permission_name].GROUP) , groups); - - // Build Add array - addArr = addArr.concat(userObj.add.map(function(user) { - return { - 'PrivilegeInfo':{ - 'permission_name': permission.PermissionInfo.permission_name, - 'principal_name': user, - 'principal_type': 'USER' - } - } - })); - addArr = addArr.concat(groupObj.add.map(function(group) { - return { - 'PrivilegeInfo':{ - 'permission_name': permission.PermissionInfo.permission_name, - 'principal_name': group, - 'principal_type': 'GROUP' - } - } - })); - - // Build del array - delArr = delArr.concat(userObj.del.map(function(user) { - return { - 'PrivilegeInfo':{ - 'permission_name': permission.PermissionInfo.permission_name, - 'principal_name': user, - 'principal_type': 'USER' - } - } - })); - delArr = delArr.concat(groupObj.del.map(function(group) { - return { - 'PrivilegeInfo':{ - 'permission_name': permission.PermissionInfo.permission_name, - 'principal_name': group, - 'principal_type': 'GROUP' - } - } - })); - }); - - if(addArr.length){ - resource.createPrivileges(params, addArr) - .then(function() { - deferred.resolve(); - }) - .catch(function(data) { - deferred.reject(data); - }); - } - - if(delArr.length){ - resource.deletePrivileges(params, delArr) - .then(function() { - deferred.resolve(); - }) - .catch(function(data) { - deferred.resolve(data); - }); - } - - return deferred.promise; - } function passOneRoleCheck(arr) { var hashes = {}; http://git-wip-us.apache.org/repos/asf/ambari/blob/b6cb758b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/View.js ---------------------------------------------------------------------- diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/View.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/View.js index fbe0ec1..5bc0509 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/View.js +++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/View.js @@ -378,12 +378,7 @@ angular.module('ambariAdminConsole') View.deletePrivilege = function(params) { return $http({ method: 'DELETE', - url: Settings.baseUrl + '/views/' + params.view_name +'/versions/'+params.version+'/instances/'+params.instance_name+'/privileges', - params: { - 'PrivilegeInfo/principal_type': params.principalType, - 'PrivilegeInfo/principal_name': params.principalName, - 'PrivilegeInfo/permission_name': params.permissionName - } + url: Settings.baseUrl + '/views/' + params.view_name +'/versions/'+params.version+'/instances/'+params.instance_name+'/privileges/'+params.id }); };