feat: System chat user permission

This commit is contained in:
zhangzhanwei 2025-06-27 11:19:36 +08:00 committed by zhanweizhang7
parent 594ca6cd89
commit 86ee4598ee
2 changed files with 38 additions and 67 deletions

View File

@ -72,6 +72,11 @@ const PermissionConst = {
CHAT_USER_GROUP: new Permission('CHAT_USER:READ+USER_GROUP'),
USER_GROUP_READ: new Permission('USER_GROUP:READ'),
USER_GROUP_CREATE: new Permission('USER_GROUP:READ+CREATE'),
USER_GROUP_EDIT: new Permission('USER_GROUP:READ+EDIT'),
USER_GROUP_DELETE: new Permission('USER_GROUP:READ+DELETE'),
USER_GROUP_ADD_MEMBER: new Permission('USER_GROUP:READ+ADD_MEMBER'),
USER_GROUP_REMOVE_MEMBER: new Permission('USER_GROUP:READ+REMOVE_MEMBER'),
ROLE_READ: new Permission('ROLE:READ'),

View File

@ -14,20 +14,19 @@
@click="createUser()"
v-hasPermission="
new ComplexPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.USER.getWorkspaceRole,
],
[PermissionConst.WORKSPACE_CHAT_USER_CREATE.getWorkspacePermission],
[],
'OR',
)
"
[RoleConst.ADMIN, RoleConst.WORKSPACE_MANAGE],
[PermissionConst.CHAT_USER_CREATE, PermissionConst.WORKSPACE_CHAT_USER_CREATE],
[],'OR',)"
>
{{ t('views.userManage.createUser') }}
</el-button>
<el-button @click="syncUsers">
<el-button @click="syncUsers"
v-hasPermission="
new ComplexPermission(
[RoleConst.ADMIN],
[PermissionConst.CHAT_USER_SYNC],
[],'OR',)"
>
{{ $t('views.chatUser.syncUsers') }}
</el-button>
<el-button
@ -35,16 +34,9 @@
@click="setUserGroups"
v-hasPermission="
new ComplexPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.USER.getWorkspaceRole,
],
[PermissionConst.WORKSPACE_CHAT_USER_GROUP.getWorkspacePermission],
[],
'OR',
)
"
[RoleConst.ADMIN,RoleConst.WORKSPACE_MANAGE],
[PermissionConst.CHAT_USER_GROUP, PermissionConst.WORKSPACE_CHAT_USER_GROUP],
[],'OR',)"
>
{{ $t('views.chatUser.setUserGroups') }}
</el-button>
@ -53,16 +45,9 @@
@click="handleBatchDelete"
v-hasPermission="
new ComplexPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.USER.getWorkspaceRole,
],
[PermissionConst.WORKSPACE_CHAT_USER_DELETE.getWorkspacePermission],
[],
'OR',
)
"
[RoleConst.ADMIN, RoleConst.WORKSPACE_MANAGE],
[PermissionConst.WORKSPACE_CHAT_USER_DELETE, PermissionConst.CHAT_USER_DELETE],
[],'OR',)"
>
{{ $t('common.delete') }}
</el-button>
@ -186,6 +171,10 @@
size="small"
v-model="row.is_active"
:before-change="() => changeState(row)"
v-if="hasPermission(new ComplexPermission(
[RoleConst.ADMIN, RoleConst.WORKSPACE_MANAGE],
[PermissionConst.CHAT_USER_EDIT, PermissionConst.WORKSPACE_CHAT_USER_EDIT],
[],'OR'),'OR')"
/>
</span>
<el-divider direction="vertical" />
@ -195,18 +184,10 @@
text
@click.stop="editUser(row)"
:title="$t('common.edit')"
v-hasPermission="
new ComplexPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.USER.getWorkspaceRole,
],
[PermissionConst.WORKSPACE_CHAT_USER_EDIT.getWorkspacePermission],
[],
'OR',
)
"
v-if="hasPermission(new ComplexPermission(
[RoleConst.ADMIN, RoleConst.WORKSPACE_MANAGE],
[PermissionConst.CHAT_USER_EDIT, PermissionConst.WORKSPACE_CHAT_USER_EDIT],
[],'OR'),'OR')"
>
<el-icon>
<EditPen />
@ -220,18 +201,10 @@
text
@click.stop="editPwdUser(row)"
:title="$t('views.userManage.setting.updatePwd')"
v-hasPermission="
new ComplexPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.USER.getWorkspaceRole,
],
[PermissionConst.WORKSPACE_CHAT_USER_EDIT.getWorkspacePermission],
[],
'OR',
)
"
v-if="hasPermission(new ComplexPermission(
[RoleConst.ADMIN, RoleConst.WORKSPACE_MANAGE],
[PermissionConst.CHAT_USER_EDIT, PermissionConst.WORKSPACE_CHAT_USER_EDIT],
[],'OR'),'OR')"
>
<el-icon>
<Lock />
@ -245,18 +218,10 @@
text
@click.stop="deleteUserManage(row)"
:title="$t('common.delete')"
v-hasPermission="
new ComplexPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.USER.getWorkspaceRole,
],
[PermissionConst.WORKSPACE_CHAT_USER_DELETE.getWorkspacePermission],
[],
'OR',
)
"
v-if="hasPermission(new ComplexPermission(
[RoleConst.ADMIN, RoleConst.WORKSPACE_MANAGE],
[PermissionConst.CHAT_USER_DELETE, PermissionConst.WORKSPACE_CHAT_USER_DELETE],
[],'OR'),'OR')"
>
<el-icon>
<Delete />
@ -301,6 +266,7 @@ import SystemGroupApi from '@/api/system/user-group'
import type { ListItem } from '@/api/type/common'
import { PermissionConst, RoleConst } from '@/utils/permission/data'
import { ComplexPermission } from '@/utils/permission/type'
import { hasPermission } from '@/utils/permission'
const search_type = ref('username')
const search_form = ref<{