瀏覽代碼

[security] Update shield icons on bulk operations

Enrico Berti 11 年之前
父節點
當前提交
547ce0b
共有 1 個文件被更改,包括 43 次插入16 次删除
  1. 43 16
      apps/security/static/js/hive.ko.js

+ 43 - 16
apps/security/static/js/hive.ko.js

@@ -851,7 +851,14 @@ var HiveViewModel = function (initial) {
     return _privilege;
     return _privilege;
   }
   }
 
 
-  function _create_authorizable_from_ko(privilege) {
+  function _create_authorizable_from_ko(optionalPath) {
+    if (optionalPath != null){
+      return {
+        'server': self.assist.server(),
+        'db':  optionalPath.split(/[.]/)[0],
+        'table':  optionalPath.split(/[.]/)[1]
+      }
+    }
     return {
     return {
       'server': self.assist.server(),
       'server': self.assist.server(),
       'db': self.assist.db(),
       'db': self.assist.db(),
@@ -859,9 +866,13 @@ var HiveViewModel = function (initial) {
     }
     }
   }
   }
 
 
-  self.list_sentry_privileges_by_authorizable = function () {
+  self.list_sentry_privileges_by_authorizable = function (optionalPath, skipList) {
+    var _path = self.assist.path();
+    if (optionalPath != null){
+      _path = optionalPath;
+    }
     self.isLoadingPrivileges(true);
     self.isLoadingPrivileges(true);
-    if (self.assist.path() != "") {
+    if (_path != "") {
       self.assist.roles.removeAll();
       self.assist.roles.removeAll();
       self.assist.privileges.removeAll();
       self.assist.privileges.removeAll();
       $.ajax({
       $.ajax({
@@ -870,7 +881,7 @@ var HiveViewModel = function (initial) {
         data: {
         data: {
           groupName: $('#selectedGroup').val(),
           groupName: $('#selectedGroup').val(),
           roleSet: ko.mapping.toJSON({all: true, roles: []}),
           roleSet: ko.mapping.toJSON({all: true, roles: []}),
-          authorizableHierarchy: ko.mapping.toJSON(_create_authorizable_from_ko())
+          authorizableHierarchy: ko.mapping.toJSON(_create_authorizable_from_ko(_path))
         },
         },
         success: function (data) {
         success: function (data) {
           var _privileges = [];
           var _privileges = [];
@@ -878,20 +889,24 @@ var HiveViewModel = function (initial) {
             if (item.table != ""){
             if (item.table != ""){
               self.assist.updatePathProperty(self.assist.growingTree(), item.database + "." + item.table, "withPrivileges", true);
               self.assist.updatePathProperty(self.assist.growingTree(), item.database + "." + item.table, "withPrivileges", true);
             }
             }
-            var _role = null;
-            self.assist.roles().forEach(function (role) {
-              if (role.name() == item.roleName) {
-                _role = role;
+            if (typeof skipList == "undefined" || (skipList != null && typeof skipList == "Boolean" && !skipList)){
+              var _role = null;
+              self.assist.roles().forEach(function (role) {
+                if (role.name() == item.roleName) {
+                  _role = role;
+                }
+              });
+              if (_role == null) {
+                var _idx = self.assist.roles.push(new Role(self, { name: item.roleName }));
+                _role = self.assist.roles()[_idx - 1];
               }
               }
-            });
-            if (_role == null) {
-              var _idx = self.assist.roles.push(new Role(self, { name: item.roleName }));
-              _role = self.assist.roles()[_idx - 1];
+              _role.privileges.push(_create_ko_privilege(item));
+              _privileges.push(_create_ko_privilege(item));
             }
             }
-            _role.privileges.push(_create_ko_privilege(item));
-            _privileges.push(_create_ko_privilege(item));
           });
           });
-          self.assist.privileges(_privileges);
+          if (typeof skipList == "undefined" || (skipList != null && typeof skipList == "Boolean" && !skipList)) {
+            self.assist.privileges(_privileges);
+          }
           self.isLoadingPrivileges(false);
           self.isLoadingPrivileges(false);
           self.assist.loadData(self.assist.growingTree());
           self.assist.loadData(self.assist.growingTree());
         }
         }
@@ -909,7 +924,7 @@ var HiveViewModel = function (initial) {
         self.bulk_add_privileges();
         self.bulk_add_privileges();
         break;
         break;
       case "sync":
       case "sync":
-        self.assist.bulkSyncAcls();
+        alert("Not supported yet");
         break;
         break;
       case "delete":
       case "delete":
         self.bulk_delete_privileges();
         self.bulk_delete_privileges();
@@ -927,6 +942,9 @@ var HiveViewModel = function (initial) {
       'recursive': false
       'recursive': false
     }, function (data) {
     }, function (data) {
       if (data.status == 0) {
       if (data.status == 0) {
+        ko.utils.arrayForEach(self.assist.checkedItems(), function (item) {
+          self.assist.updatePathProperty(self.assist.growingTree(), item.path, "withPrivileges", false);
+        });
         self.list_sentry_privileges_by_authorizable(); // Refresh
         self.list_sentry_privileges_by_authorizable(); // Refresh
         $(document).trigger("deleted.bulk.privileges");
         $(document).trigger("deleted.bulk.privileges");
       } else {
       } else {
@@ -947,6 +965,9 @@ var HiveViewModel = function (initial) {
       'recursive': false
       'recursive': false
     }, function (data) {
     }, function (data) {
       if (data.status == 0) {
       if (data.status == 0) {
+        ko.utils.arrayForEach(self.assist.checkedItems(), function (item) {
+          self.assist.updatePathProperty(self.assist.growingTree(), item.path, "withPrivileges", true);
+        });
         self.list_sentry_privileges_by_authorizable(); // Refresh
         self.list_sentry_privileges_by_authorizable(); // Refresh
         $(document).trigger("added.bulk.privileges");
         $(document).trigger("added.bulk.privileges");
       } else {
       } else {
@@ -957,6 +978,12 @@ var HiveViewModel = function (initial) {
     });
     });
   }
   }
 
 
+  self.bulk_refresh_privileges= function () {
+    ko.utils.arrayForEach(self.assist.checkedItems(), function (item) {
+      self.list_sentry_privileges_by_authorizable(item.path, true);
+    });
+  };
+
   self.fetchUsers = function () {
   self.fetchUsers = function () {
     $.getJSON('/desktop/api/users/autocomplete', {
     $.getJSON('/desktop/api/users/autocomplete', {
       'include_myself': true,
       'include_myself': true,