Skip to content

Commit bb109d6

Browse files
committed
feat: update permission checks to include workspace-specific roles for knowledge document operations
1 parent 4ae803e commit bb109d6

File tree

4 files changed

+170
-55
lines changed

4 files changed

+170
-55
lines changed

apps/knowledge/views/document.py

Lines changed: 76 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ class DocumentView(APIView):
3535
)
3636
@has_permissions(
3737
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_knowledge_permission(),
38-
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.USER.get_workspace_role()
38+
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_permission_workspace_manage_role(),
39+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
40+
RoleConstants.USER.get_workspace_role()
3941
)
4042
@log(menu='document', operate="Create document",
4143
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
@@ -58,7 +60,9 @@ def post(self, request: Request, workspace_id: str, knowledge_id: str):
5860
)
5961
@has_permissions(
6062
PermissionConstants.KNOWLEDGE_DOCUMENT_READ.get_workspace_knowledge_permission(),
61-
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.USER.get_workspace_role()
63+
PermissionConstants.KNOWLEDGE_DOCUMENT_READ.get_workspace_permission_workspace_manage_role(),
64+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
65+
RoleConstants.USER.get_workspace_role()
6266
)
6367
def get(self, request: Request, workspace_id: str, knowledge_id: str):
6468
return result.success(DocumentSerializers.Query(
@@ -85,7 +89,9 @@ class Operate(APIView):
8589
)
8690
@has_permissions(
8791
PermissionConstants.KNOWLEDGE_DOCUMENT_READ.get_workspace_knowledge_permission(),
88-
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.USER.get_workspace_role()
92+
PermissionConstants.KNOWLEDGE_DOCUMENT_READ.get_workspace_permission_workspace_manage_role(),
93+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
94+
RoleConstants.USER.get_workspace_role()
8995
)
9096
def get(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
9197
operate = DocumentSerializers.Operate(data={
@@ -105,7 +111,9 @@ def get(self, request: Request, workspace_id: str, knowledge_id: str, document_i
105111
)
106112
@has_permissions(
107113
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
108-
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.USER.get_workspace_role()
114+
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_permission_workspace_manage_role(),
115+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
116+
RoleConstants.USER.get_workspace_role()
109117
)
110118
@log(
111119
menu='document', operate="Modify document",
@@ -129,7 +137,9 @@ def put(self, request: Request, workspace_id: str, knowledge_id: str, document_i
129137
)
130138
@has_permissions(
131139
PermissionConstants.KNOWLEDGE_DOCUMENT_DELETE.get_workspace_knowledge_permission(),
132-
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.USER.get_workspace_role()
140+
PermissionConstants.KNOWLEDGE_DOCUMENT_DELETE.get_workspace_permission_workspace_manage_role(),
141+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
142+
RoleConstants.USER.get_workspace_role()
133143
)
134144
@log(
135145
menu='document', operate="Delete document",
@@ -162,7 +172,8 @@ class Split(APIView):
162172
@has_permissions(
163173
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_knowledge_permission(),
164174
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
165-
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.USER.get_workspace_role()
175+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
176+
RoleConstants.USER.get_workspace_role()
166177
)
167178
def post(self, request: Request, workspace_id: str, knowledge_id: str):
168179
split_data = {'file': request.FILES.getlist('file')}
@@ -210,7 +221,9 @@ class BatchEditHitHandling(APIView):
210221
)
211222
@has_permissions(
212223
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
213-
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.USER.get_workspace_role()
224+
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_permission_workspace_manage_role(),
225+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
226+
RoleConstants.USER.get_workspace_role()
214227
)
215228
@log(
216229
menu='document', operate="Modify document hit processing methods in batches",
@@ -239,7 +252,9 @@ class SyncWeb(APIView):
239252
)
240253
@has_permissions(
241254
PermissionConstants.KNOWLEDGE_DOCUMENT_SYNC.get_workspace_knowledge_permission(),
242-
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.USER.get_workspace_role()
255+
PermissionConstants.KNOWLEDGE_DOCUMENT_SYNC.get_workspace_permission_workspace_manage_role(),
256+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
257+
RoleConstants.USER.get_workspace_role()
243258
)
244259
@log(
245260
menu='document', operate="Synchronize web site types",
@@ -268,7 +283,9 @@ class Refresh(APIView):
268283
)
269284
@has_permissions(
270285
PermissionConstants.KNOWLEDGE_DOCUMENT_VECTOR.get_workspace_knowledge_permission(),
271-
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.USER.get_workspace_role()
286+
PermissionConstants.KNOWLEDGE_DOCUMENT_VECTOR.get_workspace_permission_workspace_manage_role(),
287+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
288+
RoleConstants.USER.get_workspace_role()
272289
)
273290
@log(
274291
menu='document', operate="Refresh document vector library",
@@ -296,7 +313,9 @@ class CancelTask(APIView):
296313
)
297314
@has_permissions(
298315
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
299-
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.USER.get_workspace_role()
316+
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_permission_workspace_manage_role(),
317+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
318+
RoleConstants.USER.get_workspace_role()
300319
)
301320
@log(
302321
menu='document', operate="Cancel task",
@@ -324,7 +343,9 @@ class BatchCancelTask(APIView):
324343
)
325344
@has_permissions(
326345
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
327-
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.USER.get_workspace_role()
346+
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_permission_workspace_manage_role(),
347+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
348+
RoleConstants.USER.get_workspace_role()
328349
)
329350
@log(
330351
menu='document', operate="Cancel tasks in batches",
@@ -353,8 +374,11 @@ class BatchCreate(APIView):
353374
)
354375
@has_permissions(
355376
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_knowledge_permission(),
377+
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_permission_workspace_manage_role(),
356378
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
357-
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.USER.get_workspace_role()
379+
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_permission_workspace_manage_role(),
380+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
381+
RoleConstants.USER.get_workspace_role()
358382
)
359383
@log(
360384
menu='document', operate="Create documents in batches",
@@ -383,8 +407,11 @@ class BatchSync(APIView):
383407
)
384408
@has_permissions(
385409
PermissionConstants.KNOWLEDGE_DOCUMENT_SYNC.get_workspace_knowledge_permission(),
410+
PermissionConstants.KNOWLEDGE_DOCUMENT_SYNC.get_workspace_permission_workspace_manage_role(),
386411
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
387-
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.USER.get_workspace_role()
412+
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_permission_workspace_manage_role(),
413+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
414+
RoleConstants.USER.get_workspace_role()
388415
)
389416
@log(
390417
menu='document', operate="Batch sync documents",
@@ -413,8 +440,11 @@ class BatchDelete(APIView):
413440
)
414441
@has_permissions(
415442
PermissionConstants.KNOWLEDGE_DOCUMENT_DELETE.get_workspace_knowledge_permission(),
443+
PermissionConstants.KNOWLEDGE_DOCUMENT_DELETE.get_workspace_permission_workspace_manage_role(),
416444
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
417-
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.USER.get_workspace_role()
445+
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_permission_workspace_manage_role(),
446+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
447+
RoleConstants.USER.get_workspace_role()
418448
)
419449
@log(
420450
menu='document', operate="Delete documents in batches",
@@ -442,8 +472,11 @@ class BatchRefresh(APIView):
442472
)
443473
@has_permissions(
444474
PermissionConstants.KNOWLEDGE_DOCUMENT_VECTOR.get_workspace_knowledge_permission(),
475+
PermissionConstants.KNOWLEDGE_DOCUMENT_VECTOR.get_workspace_permission_workspace_manage_role(),
445476
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
446-
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.USER.get_workspace_role()
477+
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_permission_workspace_manage_role(),
478+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
479+
RoleConstants.USER.get_workspace_role()
447480
)
448481
@log(
449482
menu='document', operate="Batch refresh document vector library",
@@ -473,8 +506,11 @@ class BatchGenerateRelated(APIView):
473506
)
474507
@has_permissions(
475508
PermissionConstants.KNOWLEDGE_DOCUMENT_GENERATE.get_workspace_knowledge_permission(),
509+
PermissionConstants.KNOWLEDGE_DOCUMENT_GENERATE.get_workspace_permission_workspace_manage_role(),
476510
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
477-
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.USER.get_workspace_role()
511+
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_permission_workspace_manage_role(),
512+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
513+
RoleConstants.USER.get_workspace_role()
478514
)
479515
@log(
480516
menu='document', operate="Batch generate related documents",
@@ -502,7 +538,9 @@ class Page(APIView):
502538
)
503539
@has_permissions(
504540
PermissionConstants.KNOWLEDGE_DOCUMENT_READ.get_workspace_knowledge_permission(),
505-
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.USER.get_workspace_role()
541+
PermissionConstants.KNOWLEDGE_DOCUMENT_READ.get_workspace_permission_workspace_manage_role(),
542+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
543+
RoleConstants.USER.get_workspace_role()
506544
)
507545
def get(self, request: Request, workspace_id: str, knowledge_id: str, current_page: int, page_size: int):
508546
return result.success(DocumentSerializers.Query(
@@ -528,7 +566,9 @@ class Export(APIView):
528566
)
529567
@has_permissions(
530568
PermissionConstants.KNOWLEDGE_DOCUMENT_EXPORT.get_workspace_knowledge_permission(),
531-
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.USER.get_workspace_role()
569+
PermissionConstants.KNOWLEDGE_DOCUMENT_EXPORT.get_workspace_permission_workspace_manage_role(),
570+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
571+
RoleConstants.USER.get_workspace_role()
532572
)
533573
@log(
534574
menu='document', operate="Export document",
@@ -554,7 +594,9 @@ class ExportZip(APIView):
554594
)
555595
@has_permissions(
556596
PermissionConstants.KNOWLEDGE_DOCUMENT_EXPORT.get_workspace_knowledge_permission(),
557-
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.USER.get_workspace_role()
597+
PermissionConstants.KNOWLEDGE_DOCUMENT_EXPORT.get_workspace_permission_workspace_manage_role(),
598+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
599+
RoleConstants.USER.get_workspace_role()
558600
)
559601
@log(
560602
menu='document', operate="Export Zip document",
@@ -580,7 +622,9 @@ class DownloadSourceFile(APIView):
580622
)
581623
@has_permissions(
582624
PermissionConstants.KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE.get_workspace_knowledge_permission(),
583-
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.USER.get_workspace_role()
625+
PermissionConstants.KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE.get_workspace_permission_workspace_manage_role(),
626+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
627+
RoleConstants.USER.get_workspace_role()
584628
)
585629
def get(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
586630
return DocumentSerializers.Operate(data={
@@ -600,7 +644,9 @@ class Migrate(APIView):
600644
)
601645
@has_permissions(
602646
PermissionConstants.KNOWLEDGE_DOCUMENT_MIGRATE.get_workspace_knowledge_permission(),
603-
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.USER.get_workspace_role()
647+
PermissionConstants.KNOWLEDGE_DOCUMENT_MIGRATE.get_workspace_permission_workspace_manage_role(),
648+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
649+
RoleConstants.USER.get_workspace_role()
604650
)
605651
@log(
606652
menu='document', operate="Migrate documents in batches",
@@ -634,7 +680,9 @@ class WebDocumentView(APIView):
634680
)
635681
@has_permissions(
636682
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_knowledge_permission(),
637-
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.USER.get_workspace_role()
683+
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_permission_workspace_manage_role(),
684+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
685+
RoleConstants.USER.get_workspace_role()
638686
)
639687
@log(
640688
menu='document', operate="Create Web site documents",
@@ -665,7 +713,9 @@ class QaDocumentView(APIView):
665713
)
666714
@has_permissions(
667715
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_knowledge_permission(),
668-
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.USER.get_workspace_role()
716+
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_permission_workspace_manage_role(),
717+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
718+
RoleConstants.USER.get_workspace_role()
669719
)
670720
@log(
671721
menu='document', operate="Import QA and create documentation",
@@ -696,7 +746,9 @@ class TableDocumentView(APIView):
696746
)
697747
@has_permissions(
698748
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_knowledge_permission(),
699-
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.USER.get_workspace_role()
749+
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_permission_workspace_manage_role(),
750+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
751+
RoleConstants.USER.get_workspace_role()
700752
)
701753
@log(
702754
menu='document', operate="Import tables and create documents",

0 commit comments

Comments
 (0)