1717from application .models import Application
1818from common .constants .cache_version import Cache_Version
1919from common .constants .permission_constants import get_default_workspace_user_role_mapping_list , RoleConstants , \
20- ResourcePermissionGroup , ResourcePermissionRole , ResourceAuthType
20+ ResourcePermission , ResourcePermissionRole , ResourceAuthType
2121from common .database_model_manage .database_model_manage import DatabaseModelManage
2222from common .db .search import native_search
2323from common .db .sql_execute import select_list
@@ -51,7 +51,6 @@ class UserResourcePermissionResponse(serializers.Serializer):
5151
5252
5353class UpdateTeamMemberItemPermissionSerializer (serializers .Serializer ):
54- auth_target_type = serializers .ChoiceField (required = True , choices = AuthTargetType .choices , label = "授权资源" )
5554 target_id = serializers .CharField (required = True , label = _ ('target id' ))
5655 auth_type = serializers .ChoiceField (required = True , choices = ResourceAuthType .choices , label = "授权类型" )
5756 permission = PermissionSerializer (required = True , many = False )
@@ -60,34 +59,46 @@ class UpdateTeamMemberItemPermissionSerializer(serializers.Serializer):
6059class UpdateUserResourcePermissionRequest (serializers .Serializer ):
6160 user_resource_permission_list = UpdateTeamMemberItemPermissionSerializer (required = True , many = True )
6261
63- def is_valid (self , * , workspace_id = None , raise_exception = False ):
62+ def is_valid (self , * , auth_target_type = None , workspace_id = None , raise_exception = False ):
6463 super ().is_valid (raise_exception = True )
65- user_resource_permission_list = self .data .get ("user_resource_permission_list" )
64+ user_resource_permission_list = [{'target_id' : urp .get ('target_id' ), 'auth_target_type' : auth_target_type } for
65+ urp in
66+ self .data .get ("user_resource_permission_list" )]
6667 illegal_target_id_list = select_list (
6768 get_file_content (
6869 os .path .join (PROJECT_DIR , "apps" , "system_manage" , 'sql' , 'check_member_permission_target_exists.sql' )),
6970 [json .dumps (user_resource_permission_list ), workspace_id , workspace_id , workspace_id , workspace_id ])
7071 if illegal_target_id_list is not None and len (illegal_target_id_list ) > 0 :
7172 raise AppApiException (500 ,
72- _ ('Non-existent application|knowledge base id[' ) + str (illegal_target_id_list ) + ']' )
73+ _ ('Non-existent id[' ) + str (illegal_target_id_list ) + ']' )
74+
75+
76+ m_map = {
77+ "KNOWLEDGE" : Knowledge ,
78+ 'TOOL' : Tool ,
79+ 'MODEL' : Model ,
80+ 'APPLICATION' : Application ,
81+ }
82+ sql_map = {
83+ "KNOWLEDGE" : 'get_knowledge_user_resource_permission.sql' ,
84+ 'TOOL' : 'get_tool_user_resource_permission.sql' ,
85+ 'MODEL' : 'get_model_user_resource_permission.sql' ,
86+ 'APPLICATION' : 'get_application_user_resource_permission.sql'
87+ }
7388
7489
7590class UserResourcePermissionSerializer (serializers .Serializer ):
7691 workspace_id = serializers .CharField (required = True , label = _ ('workspace id' ))
7792 user_id = serializers .CharField (required = True , label = _ ('user id' ))
93+ auth_target_type = serializers .CharField (required = True , label = _ ('resource' ))
7894
7995 def get_queryset (self ):
8096 return {
81- "knowledge_query_set" : QuerySet (Knowledge )
82- .filter (workspace_id = self .data .get ('workspace_id' )),
83- 'tool_query_set' : QuerySet (Tool )
84- .filter (workspace_id = self .data .get ('workspace_id' )),
85- 'model_query_set' : QuerySet (Model )
86- .filter (workspace_id = self .data .get ('workspace_id' )),
87- 'application_query_set' : QuerySet (Application )
88- .filter (workspace_id = self .data .get ('workspace_id' )),
97+ 'query_set' : QuerySet (m_map .get (self .data .get ('auth_target_type' ))).filter (
98+ workspace_id = self .data .get ('workspace_id' )),
8999 'workspace_user_resource_permission_query_set' : QuerySet (WorkspaceUserResourcePermission ).filter (
90- workspace_id = self .data .get ('workspace_id' ), user = self .data .get ('user_id' ))
100+ workspace_id = self .data .get ('workspace_id' ), user = self .data .get ('user_id' ),
101+ auth_target_type = self .data .get ('auth_target_type' ))
91102 }
92103
93104 def list (self , user , with_valid = True ):
@@ -97,7 +108,7 @@ def list(self, user, with_valid=True):
97108 user_id = self .data .get ("user_id" )
98109 # 用户权限列表
99110 user_resource_permission_list = native_search (self .get_queryset (), get_file_content (
100- os .path .join (PROJECT_DIR , "apps" , "system_manage" , 'sql' , 'get_user_resource_permission.sql' )))
111+ os .path .join (PROJECT_DIR , "apps" , "system_manage" , 'sql' , sql_map . get ( self . data . get ( 'auth_target_type' )) )))
101112 workspace_user_role_mapping_model = DatabaseModelManage .get_model ("workspace_user_role_mapping" )
102113 workspace_model = DatabaseModelManage .get_model ("workspace_model" )
103114 if workspace_user_role_mapping_model and workspace_model :
@@ -112,14 +123,14 @@ def list(self, user, with_valid=True):
112123 if is_workspace_manage :
113124 user_resource_permission_list = list (
114125 map (lambda row : {** row ,
115- 'permission' : {ResourcePermissionGroup .VIEW .value : True ,
116- ResourcePermissionGroup .MANAGE .value : True ,
126+ 'permission' : {ResourcePermission .VIEW .value : True ,
127+ ResourcePermission .MANAGE .value : True ,
117128 ResourcePermissionRole .ROLE .value : True }},
118129 user_resource_permission_list ))
119130 return group_by ([{** user_resource_permission , 'permission' : {
120131 permission : True if user_resource_permission .get ('permission_list' ).__contains__ (permission ) else False for
121132 permission in
122- [ResourcePermissionGroup .VIEW .value , ResourcePermissionGroup .MANAGE .value ,
133+ [ResourcePermission .VIEW .value , ResourcePermission .MANAGE .value ,
123134 ResourcePermissionRole .ROLE .value ]}}
124135 for user_resource_permission in user_resource_permission_list ],
125136 key = lambda item : item .get ('auth_target_type' ))
@@ -128,14 +139,16 @@ def edit(self, instance, user, with_valid=True):
128139 if with_valid :
129140 self .is_valid (raise_exception = True )
130141 UpdateUserResourcePermissionRequest (data = instance ).is_valid (raise_exception = True ,
142+ auth_target_type = self .data .get (
143+ 'auth_target_type' ),
131144 workspace_id = self .data .get ('workspace_id' ))
132145 workspace_id = self .data .get ("workspace_id" )
133146 user_id = self .data .get ("user_id" )
134147 update_list = []
135148 save_list = []
136149 user_resource_permission_list = instance .get ('user_resource_permission_list' )
137150 workspace_user_resource_permission_exist_list = QuerySet (WorkspaceUserResourcePermission ).filter (
138- workspace_id = workspace_id , user_id = user_id )
151+ workspace_id = workspace_id , user_id = user_id , auth_target_type = self . data . get ( 'auth_target_type' ) )
139152 for user_resource_permission in user_resource_permission_list :
140153 exist_list = [user_resource_permission_exist for user_resource_permission_exist in
141154 workspace_user_resource_permission_exist_list if
@@ -147,8 +160,7 @@ def edit(self, instance, user, with_valid=True):
147160 update_list .append (exist_list [0 ])
148161 else :
149162 save_list .append (WorkspaceUserResourcePermission (target = user_resource_permission .get ('target_id' ),
150- auth_target_type = user_resource_permission .get (
151- 'auth_target_type' ),
163+ auth_target_type = self .data .get ('auth_target_type' ),
152164 permission_list = [key for key in
153165 user_resource_permission .get (
154166 'permission' ).keys () if
0 commit comments