Skip to content

Commit deb7333

Browse files
committed
fix: Permission of chat_user
--bug=1060792 --user=张展玮 【资源授权】知识库-授权单个用户单个知识库的查看权限,用户登录后能看见“向量化”&对话用户页面页可以“授权” https://www.tapd.cn/62980211/s/1760904
1 parent 2948bc9 commit deb7333

File tree

7 files changed

+58
-110
lines changed

7 files changed

+58
-110
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ const systemManage = {
133133
PermissionConst.RESOURCE_APPLICATION_CHAT_USER_READ
134134
],'OR'
135135
),
136+
chat_user_edit: () =>false,
137+
136138
chat_log_read: () =>
137139
hasPermission(
138140
[

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,8 @@ const systemManage = {
150150
PermissionConst.RESOURCE_KNOWLEDGE_PROBLEM_EDIT
151151
],'OR'
152152
),
153+
chat_user_edit: () =>false,
154+
153155

154156
auth: () => false,
155157
folderCreate: () => false,

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,8 @@ const share = {
182182
],
183183
'OR'
184184
),
185+
chat_user_edit: () =>false,
186+
185187
auth: () => false,
186188
folderCreate: () => false,
187189
folderEdit: () => false,

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ const workspaceShare = {
3131
problem_relate: () => false,
3232
problem_delete: () => false,
3333
problem_edit: () => false,
34+
chat_user_edit: () =>false,
3435

3536
folderCreate: () => false,
3637
folderEdit: () => false,

ui/src/permission/knowledge/workspace.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,16 @@ const workspace = {
272272
],
273273
'OR',
274274
),
275+
chat_user_edit: (source_id:string) =>
276+
hasPermission(
277+
[
278+
new ComplexPermission([RoleConst.USER],[PermissionConst.KNOWLEDGE.getKnowledgeWorkspaceResourcePermission(source_id)],[],'AND'),
279+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
280+
PermissionConst.KNOWLEDGE_CHAT_USER_EDIT.getKnowledgeWorkspaceResourcePermission(source_id),
281+
PermissionConst.KNOWLEDGE_CHAT_USER_EDIT.getWorkspacePermissionWorkspaceManageRole,
282+
],
283+
'OR',
284+
),
275285
hit_test: () => false,
276286
}
277287

ui/src/views/chat-user/index.vue

Lines changed: 40 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,12 @@
1515
<div class="user-left border-r">
1616
<div class="p-24 pb-0">
1717
<h4 class="medium mb-12">{{ $t('views.chatUser.group.title') }}</h4>
18-
<el-input
19-
v-model="filterText"
20-
:placeholder="$t('common.search')"
21-
prefix-icon="Search"
22-
clearable
23-
/>
18+
<el-input v-model="filterText" :placeholder="$t('common.search')" prefix-icon="Search" clearable />
2419
</div>
2520
<div class="list-height-left">
2621
<el-scrollbar v-loading="loading">
2722
<div class="p-16">
28-
<common-list
29-
:data="filterList"
30-
@click="clickUserGroup"
31-
:default-active="current?.id"
32-
>
23+
<common-list :data="filterList" @click="clickUserGroup" :default-active="current?.id">
3324
<template #default="{ row }">
3425
<span class="ellipsis-1" :title="row.name">{{ row.name }}</span>
3526
</template>
@@ -57,58 +48,30 @@
5748
</span>
5849
</div>
5950

60-
<div
61-
class="flex align-center"
62-
v-if="
63-
route.path.includes('share/')
64-
? false
65-
: hasPermission(permissionObj[currentPermissionKey], 'OR')
66-
"
67-
>
51+
<div class="flex align-center" v-if="
52+
route.path.includes('share/')
53+
? false
54+
: permissionObj[currentPermissionKey]
55+
">
6856
<div class="color-secondary mr-8">{{ $t('views.chatUser.autoAuthorization') }}</div>
69-
<el-switch
70-
size="small"
71-
:model-value="current?.is_auth"
72-
@click="changeAuth"
73-
:loading="loading"
74-
></el-switch>
57+
<el-switch size="small" :model-value="current?.is_auth" @click="changeAuth"
58+
:loading="loading"></el-switch>
7559
</div>
7660
</div>
7761

7862
<div class="flex-between mb-16" style="margin-top: 18px">
7963
<div class="flex complex-search">
8064
<el-select class="complex-search__left" v-model="searchType" style="width: 120px">
8165
<el-option :label="$t('views.login.loginForm.username.label')" value="username" />
82-
<el-option
83-
:label="$t('views.userManage.userForm.nick_name.label')"
84-
value="nick_name"
85-
/>
66+
<el-option :label="$t('views.userManage.userForm.nick_name.label')" value="nick_name" />
8667
<el-option :label="$t('views.userManage.source.label')" value="source" />
8768
</el-select>
88-
<el-input
89-
v-if="searchType === 'username'"
90-
v-model="searchForm.username"
91-
@change="getList"
92-
:placeholder="$t('common.inputPlaceholder')"
93-
style="width: 220px"
94-
clearable
95-
/>
96-
<el-input
97-
v-else-if="searchType === 'nick_name'"
98-
v-model="searchForm.nick_name"
99-
@change="getList"
100-
:placeholder="$t('common.inputPlaceholder')"
101-
style="width: 220px"
102-
clearable
103-
/>
104-
<el-select
105-
v-else-if="searchType === 'source'"
106-
v-model="searchForm.source"
107-
@change="getList"
108-
:placeholder="$t('common.selectPlaceholder')"
109-
style="width: 220px"
110-
clearable
111-
>
69+
<el-input v-if="searchType === 'username'" v-model="searchForm.username" @change="getList"
70+
:placeholder="$t('common.inputPlaceholder')" style="width: 220px" clearable />
71+
<el-input v-else-if="searchType === 'nick_name'" v-model="searchForm.nick_name" @change="getList"
72+
:placeholder="$t('common.inputPlaceholder')" style="width: 220px" clearable />
73+
<el-select v-else-if="searchType === 'source'" v-model="searchForm.source" @change="getList"
74+
:placeholder="$t('common.selectPlaceholder')" style="width: 220px" clearable>
11275
<el-option :label="$t('views.userManage.source.local')" value="LOCAL" />
11376
<el-option label="CAS" value="CAS" />
11477
<el-option label="LDAP" value="LDAP" />
@@ -119,31 +82,18 @@
11982
<el-option :label="$t('views.userManage.source.dingtalk')" value="dingtalk" />
12083
</el-select>
12184
</div>
122-
<el-button
123-
type="primary"
124-
:disabled="current?.is_auth"
125-
@click="handleSave"
126-
v-if="
127-
route.path.includes('share/')
128-
? false
129-
: hasPermission(permissionObj[currentPermissionKey], 'OR')
130-
"
131-
>
85+
<el-button type="primary" :disabled="current?.is_auth" @click="handleSave" v-if="
86+
route.path.includes('share/')
87+
? false
88+
: permissionObj[currentPermissionKey]
89+
">
13290
{{ t('common.save') }}
13391
</el-button>
13492
</div>
13593

136-
<app-table
137-
:data="tableData"
138-
:pagination-config="paginationConfig"
139-
@sizeChange="handleSizeChange"
140-
@changePage="getList"
141-
:maxTableHeight="350"
142-
>
143-
<el-table-column
144-
prop="nick_name"
145-
:label="$t('views.userManage.userForm.nick_name.label')"
146-
/>
94+
<app-table :data="tableData" :pagination-config="paginationConfig" @sizeChange="handleSizeChange"
95+
@changePage="getList" :maxTableHeight="350">
96+
<el-table-column prop="nick_name" :label="$t('views.userManage.userForm.nick_name.label')" />
14797
<el-table-column prop="username" :label="$t('views.login.loginForm.username.label')" />
14898
<el-table-column prop="source" :label="$t('views.userManage.source.label')">
14999
<template #default="{ row }">
@@ -164,21 +114,13 @@
164114
</el-table-column>
165115
<el-table-column :width="140" align="center">
166116
<template #header>
167-
<el-checkbox
168-
:model-value="allChecked"
169-
:indeterminate="allIndeterminate"
170-
:disabled="current?.is_auth"
171-
@change="handleCheckAll"
172-
>{{ $t('views.chatUser.authorization') }}
117+
<el-checkbox :model-value="allChecked" :indeterminate="allIndeterminate" :disabled="current?.is_auth"
118+
@change="handleCheckAll">{{ $t('views.chatUser.authorization') }}
173119
</el-checkbox>
174120
</template>
175121
<template #default="{ row }">
176-
<el-checkbox
177-
v-model="row.is_auth"
178-
:indeterminate="row.indeterminate"
179-
:disabled="current?.is_auth"
180-
@change="(value: boolean) => handleRowChange(value, row)"
181-
/>
122+
<el-checkbox v-model="row.is_auth" :indeterminate="row.indeterminate" :disabled="current?.is_auth"
123+
@change="(value: boolean) => handleRowChange(value, row)" />
182124
</template>
183125
</el-table-column>
184126
</app-table>
@@ -200,6 +142,7 @@ import { ComplexPermission } from '@/utils/permission/type'
200142
import { RoleConst, PermissionConst } from '@/utils/permission/data'
201143
import { hasPermission } from '@/utils/permission/index'
202144
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
145+
import permissionMap from '@/permission'
203146
204147
const route = useRoute()
205148
@@ -208,43 +151,31 @@ const {
208151
} = route as any
209152
210153
const permissionObj = ref<any>({
211-
APPLICATION: new ComplexPermission(
212-
[RoleConst.ADMIN, RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, RoleConst.USER.getWorkspaceRole],
213-
[
214-
PermissionConst.APPLICATION_CHAT_USER_EDIT,
215-
PermissionConst.APPLICATION_CHAT_USER_EDIT.getApplicationWorkspaceResourcePermission(id),
216-
],
217-
[],
218-
'OR',
219-
),
220-
KNOWLEDGE: new ComplexPermission(
221-
[RoleConst.ADMIN, RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, RoleConst.USER.getWorkspaceRole],
222-
[
223-
PermissionConst.KNOWLEDGE_CHAT_USER_EDIT,
224-
PermissionConst.KNOWLEDGE_CHAT_USER_EDIT.getKnowledgeWorkspaceResourcePermission(id),
225-
],
226-
[],
227-
'OR',
228-
),
229-
RESOURCE_APPLICATION: [RoleConst.ADMIN, PermissionConst.RESOURCE_APPLICATION_CHAT_USER_EDIT],
230-
RESOURCE_KNOWLEDGE: [RoleConst.ADMIN, PermissionConst.RESOURCE_KNOWLEDGE_CHAT_USER_EDIT],
231-
SHAREDKNOWLEDGE: new ComplexPermission(
154+
APPLICATION: permissionMap['application']['workspace'].application_chat_user_edit(id),
155+
KNOWLEDGE: permissionMap['knowledge']['workspace'].chat_user_edit(id),
156+
RESOURCE_APPLICATION: hasPermission([RoleConst.ADMIN, PermissionConst.RESOURCE_APPLICATION_CHAT_USER_EDIT], 'OR'),
157+
RESOURCE_KNOWLEDGE: hasPermission([RoleConst.ADMIN, PermissionConst.RESOURCE_KNOWLEDGE_CHAT_USER_EDIT], 'OR'),
158+
SHAREDKNOWLEDGE: hasPermission(new ComplexPermission(
232159
[RoleConst.ADMIN],
233160
[PermissionConst.SHARED_KNOWLEDGE_CHAT_USER_EDIT],
234161
[],
235162
'OR',
236-
),
163+
), 'OR')
237164
})
238165
239166
const currentPermissionKey = computed(() => {
240-
if (route.path.includes('shared')) return 'SHAREDKNOWLEDGE'
241167
if (route.path.includes('resource-management')) {
242168
if (route.meta?.resourceType === 'KNOWLEDGE') {
243169
return 'RESOURCE_KNOWLEDGE'
244170
} else if (route.meta?.resourceType === 'APPLICATION') {
245171
return 'RESOURCE_APPLICATION'
246172
}
247173
}
174+
else if (route.path.includes('shared')) {return 'SHAREDKNOWLEDGE'}
175+
else {
176+
if (route.path.includes('knowledge/')) return 'KNOWLEDGE'
177+
if (route.path.includes('application/')) return 'APPLICATION'
178+
}
248179
return route.meta?.resourceType as string
249180
})
250181

ui/src/views/document/index.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -515,7 +515,7 @@
515515
effect="dark"
516516
:content="$t('views.knowledge.setting.vectorization')"
517517
placement="top"
518-
v-else="permissionPrecise.vector(id)"
518+
v-if="permissionPrecise.vector(id)"
519519
>
520520
<span class="mr-4">
521521
<el-button type="primary" text @click.stop="refreshDocument(row)">

0 commit comments

Comments
 (0)