|
@@ -18,7 +18,8 @@
|
|
|
'use strict';
|
|
|
|
|
|
angular.module('ambariAdminConsole')
|
|
|
-.factory('PermissionSaver', ['Cluster', 'View', '$q', 'getDifference', function(Cluster, View, $q, getDifference) {
|
|
|
+.factory('PermissionSaver', ['Cluster', 'View', '$q', 'getDifference', '$translate', function(Cluster, View, $q, getDifference, $translate) {
|
|
|
+ var $t = $translate.instant;
|
|
|
|
|
|
function savePermissionsFor(resource, permissions, params){
|
|
|
var arr = [];
|
|
@@ -48,7 +49,16 @@ angular.module('ambariAdminConsole')
|
|
|
}
|
|
|
}));
|
|
|
});
|
|
|
-
|
|
|
+ if (!passOneRoleCheck(arr)) {
|
|
|
+ console.log("CHECK FAILED");
|
|
|
+ var deferred = $q.defer();
|
|
|
+ deferred.reject({
|
|
|
+ data: {
|
|
|
+ message: $t('users.roles.oneRolePerUser')
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return deferred.promise;
|
|
|
+ }
|
|
|
return resource.updatePrivileges(params, arr);
|
|
|
}
|
|
|
|
|
@@ -129,6 +139,19 @@ angular.module('ambariAdminConsole')
|
|
|
return deferred.promise;
|
|
|
}
|
|
|
|
|
|
+ function passOneRoleCheck(arr) {
|
|
|
+ var hash = {};
|
|
|
+ for(var i = 0; i < arr.length; i++) {
|
|
|
+ var obj = arr[i];
|
|
|
+ if (hash[obj.PrivilegeInfo.principal_name]) {
|
|
|
+ return false;
|
|
|
+ } else {
|
|
|
+ hash[obj.PrivilegeInfo.principal_name] = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
return {
|
|
|
saveClusterPermissions: function(oldPermissions, newPermissions, params) {
|
|
|
return savePermissionsFor(Cluster, oldPermissions, newPermissions, params);
|