Skip to content

Commit 9777c92

Browse files
committed
feat: add automatic permission assignment for knowledge creators
1 parent f303fc4 commit 9777c92

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

apps/knowledge/serializers/knowledge.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
from application.models import ApplicationKnowledgeMapping
2222
from common.config.embedding_config import VectorStore
23+
from common.constants.permission_constants import ResourceAuthType, ResourcePermissionGroup
2324
from common.database_model_manage.database_model_manage import DatabaseModelManage
2425
from common.db.search import native_search, get_dynamics_model, native_page_search
2526
from common.db.sql_execute import select_list
@@ -38,6 +39,7 @@
3839
from knowledge.task.sync import sync_web_knowledge, sync_replace_web_knowledge
3940
from maxkb.conf import PROJECT_DIR
4041
from models_provider.models import Model
42+
from system_manage.models import WorkspaceUserResourcePermission, AuthTargetType
4143
from users.serializers.user import is_workspace_manage
4244

4345

@@ -520,6 +522,16 @@ def save_base(self, instance, with_valid=True):
520522
problem_paragraph_mapping_list
521523
) if len(problem_paragraph_mapping_list) > 0 else None
522524

525+
# 自动授权给创建者
526+
WorkspaceUserResourcePermission(
527+
target=knowledge_id,
528+
auth_target_type=AuthTargetType.KNOWLEDGE,
529+
permission_list=[ResourcePermissionGroup.VIEW, ResourcePermissionGroup.MANAGE],
530+
workspace_id=self.data.get('workspace_id'),
531+
user_id=self.data.get('user_id'),
532+
auth_type=ResourceAuthType.RESOURCE_PERMISSION_GROUP
533+
).save()
534+
523535
return {
524536
**KnowledgeModelSerializer(knowledge).data,
525537
'user_id': self.data.get('user_id'),
@@ -557,6 +569,15 @@ def save_web(self, instance: Dict, with_valid=True):
557569
},
558570
)
559571
knowledge.save()
572+
# 自动授权给创建者
573+
WorkspaceUserResourcePermission(
574+
target=knowledge_id,
575+
auth_target_type=AuthTargetType.KNOWLEDGE,
576+
permission_list=[ResourcePermissionGroup.VIEW, ResourcePermissionGroup.MANAGE],
577+
workspace_id=self.data.get('workspace_id'),
578+
user_id=self.data.get('user_id'),
579+
auth_type=ResourceAuthType.RESOURCE_PERMISSION_GROUP
580+
).save()
560581
sync_web_knowledge.delay(str(knowledge_id), instance.get('source_url'), instance.get('selector'))
561582
return {**KnowledgeModelSerializer(knowledge).data, 'document_list': []}
562583

0 commit comments

Comments
 (0)