Skip to content

Commit f34e562

Browse files
committed
feat: Knowledge workflow edit permission
1 parent 71f1e26 commit f34e562

File tree

10 files changed

+50
-8
lines changed

10 files changed

+50
-8
lines changed

apps/knowledge/views/knowledge_workflow.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ class KnowledgeWorkflowActionView(APIView):
7373
tags=[_('Knowledge Base')] # type: ignore
7474
)
7575
@has_permissions(
76-
PermissionConstants.KNOWLEDGE_READ.get_workspace_knowledge_permission(),
77-
PermissionConstants.KNOWLEDGE_READ.get_workspace_permission_workspace_manage_role(),
76+
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_knowledge_permission(),
77+
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_permission_workspace_manage_role(),
7878
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
7979
ViewPermission(
8080
[RoleConstants.USER.get_workspace_role()],
@@ -148,8 +148,8 @@ class Publish(APIView):
148148
responses=DefaultResultSerializer,
149149
tags=[_('Knowledge')] # type: ignore
150150
)
151-
@has_permissions(PermissionConstants.KNOWLEDGE_EDIT.get_workspace_knowledge_permission(),
152-
PermissionConstants.KNOWLEDGE_EDIT.get_workspace_permission_workspace_manage_role(),
151+
@has_permissions(PermissionConstants.KNOWLEDGE_WORKFLOW_EDIT.get_workspace_knowledge_permission(),
152+
PermissionConstants.KNOWLEDGE_WORKFLOW_EDIT.get_workspace_permission_workspace_manage_role(),
153153
ViewPermission([RoleConstants.USER.get_workspace_role()],
154154
[PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()],
155155
CompareConstants.AND),

ui/src/locales/lang/en-US/views/application.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export default {
2626
'The Community Edition supports up to 5 APP. If you need more APP, please upgrade to the Professional Edition.',
2727
saveErrorMessage: 'Saving failed, please check your input or try again later',
2828
loadingErrorMessage: 'Failed to load configuration, please check your input or try again later',
29+
noDocPermission: 'No permission to create documents',
2930
},
3031

3132
form: {

ui/src/locales/lang/zh-CN/views/application.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export default {
2626
professionalMessage: '社区版最多支持 5 个应用,如需拥有更多应用,请升级为专业版。',
2727
saveErrorMessage: '保存失败,请检查输入或稍后再试',
2828
loadingErrorMessage: '加载配置失败,请检查输入或稍后再试',
29+
noDocPermission: '无文档创建权限',
2930
},
3031
form: {
3132
appName: {

ui/src/locales/lang/zh-Hant/views/application.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export default {
2323
professionalMessage: '社群版最多支援 5 個應用,如需擁有更多應用,請升級為專業版。',
2424
saveErrorMessage: '儲存失敗,請檢查輸入或稍後再試',
2525
loadingErrorMessage: '載入配置失敗,請檢查輸入或稍後再試',
26+
noDocPermission: '無文檔創建權限',
2627
},
2728
form: {
2829
appName: {

ui/src/permission/knowledge/system-manage.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,12 @@ const systemManage = {
191191
PermissionConst.RESOURCE_KNOWLEDGE_WORKFLOW_READ
192192
],'OR'
193193
),
194+
workflow_edit: () =>
195+
hasPermission([
196+
RoleConst.ADMIN,
197+
PermissionConst.RESOURCE_KNOWLEDGE_WORKFLOW_EDIT
198+
],'OR'
199+
),
194200
chat_user_edit: () =>false,
195201

196202

ui/src/permission/knowledge/system-share.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ const share = {
5858
hasPermission([RoleConst.ADMIN, PermissionConst.SHARED_KNOWLEDGE_TAG_DELETE], 'OR'),
5959
debug: () =>
6060
hasPermission([RoleConst.ADMIN, PermissionConst.SHARED_KNOWLEDGE_WORKFLOW_READ], 'OR'),
61+
workflow_edit: () =>
62+
hasPermission([RoleConst.ADMIN, PermissionConst.SHARED_KNOWLEDGE_WORKFLOW_EDIT], 'OR'),
63+
6164
chat_user_edit: () => false,
6265

6366
auth: () => false,

ui/src/permission/knowledge/workspace-share.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ const workspaceShare = {
4848
folderDelete: () => false,
4949
hit_test: () => false,
5050
debug: () => true,
51+
workflow_edit: () => true,
5152
}
5253

5354
export default workspaceShare

ui/src/permission/knowledge/workspace.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -572,6 +572,21 @@ const workspace = {
572572
],
573573
'OR',
574574
),
575+
workflow_edit: (source_id: string) =>
576+
hasPermission(
577+
[
578+
new ComplexPermission(
579+
[RoleConst.USER],
580+
[PermissionConst.KNOWLEDGE.getKnowledgeWorkspaceResourcePermission(source_id)],
581+
[],
582+
'AND',
583+
),
584+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
585+
PermissionConst.KNOWLEDGE_WORKFLOW_EDIT.getKnowledgeWorkspaceResourcePermission(source_id),
586+
PermissionConst.KNOWLEDGE_WORKFLOW_EDIT.getWorkspacePermissionWorkspaceManageRole,
587+
],
588+
'OR',
589+
),
575590
hit_test: () => false,
576591
}
577592

ui/src/views/knowledge-workflow/component/DebugDrawer.vue

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,10 @@ import applicationApi from '@/api/application/application'
6767
import KnowledgeBase from '@/views/knowledge-workflow/component/action/KnowledgeBase.vue'
6868
import { WorkflowType } from '@/enums/application'
6969
import { loadSharedApi } from '@/utils/dynamics-api/shared-api.ts'
70+
import permissionMap from '@/permission'
71+
import { MsgError } from '@/utils/message'
72+
import { t } from '@/locales'
73+
7074
import { useRoute, useRouter } from 'vue-router'
7175
provide('upload', (file: any, loading?: Ref<boolean>) => {
7276
return applicationApi.postUploadFile(file, id, 'KNOWLEDGE', loading)
@@ -128,8 +132,14 @@ const up = () => {
128132
active.value = 'data_source'
129133
})
130134
}
135+
136+
const permissionPrecise = computed(() => {
137+
return permissionMap['knowledge'][apiType.value]
138+
})
139+
131140
const upload = () => {
132-
ActionRef.value.validate().then(() => {
141+
if (permissionPrecise.value.doc_create(id)) {
142+
ActionRef.value.validate().then(() => {
133143
form_data.value[active.value] = ActionRef.value.get_data()
134144
loadSharedApi({ type: 'knowledge', systemType: apiType.value })
135145
.workflowAction(id, form_data.value, loading)
@@ -138,6 +148,9 @@ const upload = () => {
138148
active.value = 'result'
139149
})
140150
})
151+
} else {
152+
MsgError(t('views.application.tip.noDocPermission'))
153+
}
141154
}
142155
const continueImporting = () => {
143156
action_id.value = undefined

ui/src/views/knowledge-workflow/index.vue

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,12 @@
3434
<AppIcon iconName="app-debug-outlined" class="mr-4"></AppIcon>
3535
{{ $t('common.debug') }}
3636
</el-button>
37-
<el-button @click="saveknowledge(true)">
37+
<el-button v-if="permissionPrecise.workflow_edit(id)"
38+
@click="saveknowledge(true)">
3839
<AppIcon iconName="app-save-outlined" class="mr-4"></AppIcon>
3940
{{ $t('common.save') }}
4041
</el-button>
41-
<el-button type="primary" @click="publish">
42+
<el-button type="primary" v-if="permissionPrecise.workflow_edit(id)" @click="publish">
4243
{{ $t('common.publish') }}
4344
</el-button>
4445

@@ -57,7 +58,7 @@
5758
<AppIcon iconName="app-history-outlined" class="color-secondary"></AppIcon>
5859
{{ $t('views.workflow.setting.releaseHistory') }}
5960
</el-dropdown-item>
60-
<el-dropdown-item>
61+
<el-dropdown-item v-if="permissionPrecise.workflow_edit(id)">
6162
<AppIcon iconName="app-save-outlined" class="color-secondary"></AppIcon>
6263
{{ $t('views.workflow.setting.autoSave') }}
6364
<div class="ml-4">

0 commit comments

Comments
 (0)