Skip to content

Commit a008605

Browse files
authored
fix: application query (#3344)
1 parent bb109d6 commit a008605

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

apps/application/serializers/application.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -298,15 +298,12 @@ def get_query_set(self, instance: Dict, workspace_manage: bool):
298298
folder_query_set = QuerySet(ApplicationFolder)
299299
application_query_set = QuerySet(Application)
300300
workspace_id = self.data.get('workspace_id')
301-
user_id = instance.get('user_id')
301+
user_id = self.data.get('user_id')
302302
desc = instance.get('desc')
303303
name = instance.get('name')
304304
if workspace_id is not None:
305305
folder_query_set = folder_query_set.filter(workspace_id=workspace_id)
306306
application_query_set = application_query_set.filter(workspace_id=workspace_id)
307-
if user_id is not None:
308-
folder_query_set = folder_query_set.filter(user_id=user_id)
309-
application_query_set = application_query_set.filter(user_id=user_id)
310307
folder_id = instance.get('folder_id')
311308
if folder_id is not None:
312309
folder_query_set = folder_query_set.filter(parent=folder_id)
@@ -319,12 +316,15 @@ def get_query_set(self, instance: Dict, workspace_manage: bool):
319316
application_query_set = application_query_set.filter(desc__contains=desc)
320317
application_custom_sql_query_set = application_query_set
321318
application_query_set = application_query_set.order_by("-update_time")
319+
workspace_user_role_mapping_model = DatabaseModelManage.get_model('workspace_user_role_mapping')
322320
return {
323321
'folder_query_set': folder_query_set,
324322
'application_query_set': application_query_set,
325323
'application_custom_sql': application_custom_sql_query_set
326324
} if workspace_manage else {'folder_query_set': folder_query_set,
327-
'application_query_set': application_query_set}
325+
'application_query_set': application_query_set,
326+
'user_query_set': QuerySet(workspace_user_role_mapping_model).filter(
327+
user_id=user_id, workspace_id=workspace_id)}
328328

329329
@staticmethod
330330
def is_x_pack_ee():

apps/application/sql/list_application_user_ee.sql

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,17 @@ from (select application."id"::text,
1212
application."create_time",
1313
application."update_time"
1414
from application left join "user" on user_id = "user".id
15-
where application."id" in (select target
15+
where "application".id in (select target
1616
from workspace_user_resource_permission
1717
where auth_target_type = 'APPLICATION'
1818
and case
1919
when auth_type = 'ROLE' then
20-
'APPLICATION_READ' in (select permission_id
21-
from role_permission
22-
where role_id in (select role_id
23-
from user_role_relation))
20+
'APPLICATION:READ' in (select (case when user_role_relation.role_id = any (array ['USER']) THEN 'APPLICATION:READ' else role_permission.permission_id END)
21+
from role_permission role_permission
22+
right join user_role_relation user_role_relation
23+
on user_role_relation.role_id=role_permission.role_id
24+
${user_query_set})
25+
2426
else
2527
'VIEW' = any (permission_list)
2628
end)

0 commit comments

Comments
 (0)