Skip to content

Commit 973931d

Browse files
committed
refactor: refactor resource permission handling to use user group permissions and improve cache management
1 parent c2850e1 commit 973931d

2 files changed

Lines changed: 3 additions & 60 deletions

File tree

‎apps/system_manage/serializers/user_group_resource_permission.py‎

Lines changed: 2 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,14 @@
2020
from application.models import Application
2121
from common.constants.cache_version import Cache_Version
2222
from common.auth.constants.role_constants import RoleConstants
23-
from common.constants.resource_permission_constants import ResourceAuthType, ResourcePermissionConstants
2423
from common.db.search import native_search, native_page_search, get_dynamics_model
2524
from common.db.sql_execute import select_list
2625
from common.exception.app_exception import AppApiException
2726
from common.utils.common import get_file_content
2827
from knowledge.models import Knowledge
2928
from maxkb.conf import PROJECT_DIR
30-
from maxkb.settings import edition
3129
from models_provider.models import Model
32-
from system_manage.models import WorkspaceUserResourcePermission, WorkspaceUserGroupResourcePermission
30+
from system_manage.models import WorkspaceUserGroupResourcePermission
3331
from tools.models import Tool
3432
from users.models.user_group import SystemUserGroupRelation
3533

@@ -168,61 +166,6 @@ def get_queryset(self, instance):
168166
"resource_query_set": resource_query_set,
169167
}
170168

171-
def auth_resource_batch(self, resource_id_list: list):
172-
self.is_valid(raise_exception=True)
173-
auth_target_type = self.data.get("auth_target_type")
174-
workspace_id = self.data.get("workspace_id")
175-
user_id = self.data.get("user_id")
176-
wurp = (
177-
QuerySet(WorkspaceUserResourcePermission)
178-
.filter(auth_target_type=auth_target_type, workspace_id=workspace_id, user_id=user_id)
179-
.first()
180-
)
181-
auth_type = (
182-
wurp.auth_type
183-
if wurp
184-
else (ResourceAuthType.RESOURCE_PERMISSION_GROUP if edition == "CE" else ResourceAuthType.ROLE)
185-
)
186-
workspace_user_resource_permission = [
187-
WorkspaceUserResourcePermission(
188-
target=resource_id,
189-
auth_target_type=auth_target_type,
190-
permission_list=[ResourcePermissionConstants.VIEW, ResourcePermissionConstants.MANAGE]
191-
if auth_type == ResourceAuthType.RESOURCE_PERMISSION_GROUP
192-
else [ResourcePermissionConstants.ROLE],
193-
workspace_id=workspace_id,
194-
user_id=user_id,
195-
auth_type=auth_type,
196-
)
197-
for resource_id in resource_id_list
198-
]
199-
QuerySet(WorkspaceUserResourcePermission).bulk_create(workspace_user_resource_permission)
200-
# 刷新缓存
201-
version = Cache_Version.PERMISSION_LIST.get_version()
202-
key = Cache_Version.PERMISSION_LIST.get_key(user_id=user_id)
203-
cache.delete(key, version=version)
204-
return True
205-
206-
def auth_resource(self, resource_id: str, is_folder=False):
207-
self.is_valid(raise_exception=True)
208-
auth_target_type = self.data.get("auth_target_type")
209-
workspace_id = self.data.get("workspace_id")
210-
user_id = self.data.get("user_id")
211-
212-
WorkspaceUserResourcePermission(
213-
target=resource_id,
214-
auth_target_type=auth_target_type,
215-
permission_list=[ResourcePermissionConstants.VIEW, ResourcePermissionConstants.MANAGE],
216-
workspace_id=workspace_id,
217-
user_id=user_id,
218-
auth_type=ResourceAuthType.RESOURCE_PERMISSION_GROUP,
219-
).save()
220-
# 刷新缓存
221-
version = Cache_Version.PERMISSION_LIST.get_version()
222-
key = Cache_Version.PERMISSION_LIST.get_key(user_id=user_id)
223-
cache.delete(key, version=version)
224-
return True
225-
226169
def list(self, instance, user, with_valid=True):
227170
if with_valid:
228171
self.is_valid(raise_exception=True)
@@ -508,7 +451,7 @@ def edit(self, instance, with_valid=True, current_user_id=None):
508451
]
509452

510453
if save_list:
511-
QuerySet(WorkspaceUserResourcePermission).bulk_create(save_list)
454+
QuerySet(WorkspaceUserGroupResourcePermission).bulk_create(save_list)
512455

513456
version = Cache_Version.PERMISSION_LIST.get_version()
514457
for user_group_id in user_group_ids:

‎apps/system_manage/views/user_group_resource_permission.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ def put(self, request: Request, workspace_id: str, target: str, resource: str):
228228
"target": target,
229229
"auth_target_type": resource.replace("_FOLDER", ""),
230230
}
231-
).edit(instance=request.data, current_user_id=request.user.id)
231+
).edit(instance=request.data, current_user_id=str(request.user.id))
232232
)
233233

234234
class Page(APIView):

0 commit comments

Comments
 (0)