fix(acl): del resource

This commit is contained in:
pycook 2024-03-29 13:13:38 +08:00
parent 4b5906770f
commit c1bcd0ce45
2 changed files with 6 additions and 5 deletions

View File

@ -148,10 +148,10 @@ class ACLManager(object):
if group: if group:
PermissionCRUD.revoke(rid, permissions, group_id=group.id, rebuild=rebuild) PermissionCRUD.revoke(rid, permissions, group_id=group.id, rebuild=rebuild)
def del_resource(self, name, resource_type_name=None): def del_resource(self, name, resource_type_name=None, rebuild=True):
resource = self._get_resource(name, resource_type_name) resource = self._get_resource(name, resource_type_name)
if resource: if resource:
return ResourceCRUD.delete(resource.id) return ResourceCRUD.delete(resource.id, rebuild=rebuild)
def has_permission(self, resource_name, resource_type, perm, resource_id=None): def has_permission(self, resource_name, resource_type, perm, resource_id=None):
if is_app_admin(self.app_id): if is_app_admin(self.app_id):

View File

@ -309,7 +309,7 @@ class ResourceCRUD(object):
return resource return resource
@staticmethod @staticmethod
def delete(_id): def delete(_id, rebuild=True):
resource = Resource.get_by_id(_id) or abort(404, ErrFormat.resource_not_found.format("id={}".format(_id))) resource = Resource.get_by_id(_id) or abort(404, ErrFormat.resource_not_found.format("id={}".format(_id)))
origin = resource.to_dict() origin = resource.to_dict()
@ -322,6 +322,7 @@ class ResourceCRUD(object):
i.soft_delete() i.soft_delete()
rebuilds.append((i.rid, i.app_id)) rebuilds.append((i.rid, i.app_id))
if rebuild:
for rid, app_id in set(rebuilds): for rid, app_id in set(rebuilds):
role_rebuild.apply_async(args=(rid, app_id), queue=ACL_QUEUE) role_rebuild.apply_async(args=(rid, app_id), queue=ACL_QUEUE)