fix: Resource authorization modify (#3326)
Co-authored-by: zhangzhanwei <zhanwei.zhang@fit2cloud.com>
This commit is contained in:
parent
63abffec3c
commit
a9d106ddd4
@ -28,19 +28,22 @@
|
|||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-dropdown-item class="border-t p-8" @click="openResetPassword">
|
<el-dropdown-item class="border-t p-8" @click="openResetPassword"
|
||||||
|
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.CHANGE_PASSWORD],'OR')"
|
||||||
|
>
|
||||||
{{ $t('views.login.resetPassword') }}
|
{{ $t('views.login.resetPassword') }}
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
<div
|
<div v-hasPermission="new ComplexPermission([], [], [EditionConst.IS_EE, EditionConst.IS_PE], 'OR')">
|
||||||
v-hasPermission="
|
<el-dropdown-item class="p-8" @click="openAPIKeyDialog"
|
||||||
new ComplexPermission([], [], [EditionConst.IS_EE, EditionConst.IS_PE], 'OR')
|
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.SYSTEM_API_KEY_EDIT],'OR')"
|
||||||
"
|
>
|
||||||
>
|
|
||||||
<el-dropdown-item class="p-8" @click="openAPIKeyDialog">
|
|
||||||
{{ $t('layout.apiKey') }}
|
{{ $t('layout.apiKey') }}
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
</div>
|
</div>
|
||||||
<el-dropdown-item style="padding: 0" @click.stop>
|
<el-dropdown-item style="padding: 0" @click.stop
|
||||||
|
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.SWITCH_LANGUAGE],'OR')"
|
||||||
|
>
|
||||||
<el-dropdown class="w-full" trigger="hover" placement="left-start">
|
<el-dropdown class="w-full" trigger="hover" placement="left-start">
|
||||||
<div class="flex-between w-full" style="line-height: 22px; padding: 12px 11px">
|
<div class="flex-between w-full" style="line-height: 22px; padding: 12px 11px">
|
||||||
<span> {{ $t('layout.language') }}</span>
|
<span> {{ $t('layout.language') }}</span>
|
||||||
@ -73,7 +76,9 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
<el-dropdown-item @click="openAbout">
|
<el-dropdown-item @click="openAbout"
|
||||||
|
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.ABOUT_READ],'OR')"
|
||||||
|
>
|
||||||
{{ $t('layout.about.title') }}
|
{{ $t('layout.about.title') }}
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
|
|
||||||
@ -104,9 +109,10 @@ import ResetPassword from './ResetPassword.vue'
|
|||||||
import AboutDialog from './AboutDialog.vue'
|
import AboutDialog from './AboutDialog.vue'
|
||||||
// import UserPwdDialog from '@/views/user-manage/component/UserPwdDialog.vue'
|
// import UserPwdDialog from '@/views/user-manage/component/UserPwdDialog.vue'
|
||||||
import APIKeyDialog from './APIKeyDialog.vue'
|
import APIKeyDialog from './APIKeyDialog.vue'
|
||||||
import { ComplexPermission } from '@/utils/permission/type'
|
import {ComplexPermission} from '@/utils/permission/type'
|
||||||
import { langList } from '@/locales/index'
|
import {langList} from '@/locales/index'
|
||||||
import { EditionConst } from '@/utils/permission/data'
|
import { hasPermission } from '@/utils/permission'
|
||||||
|
import { PermissionConst, RoleConst,EditionConst } from '@/utils/permission/data'
|
||||||
|
|
||||||
const { user, login } = useStore()
|
const { user, login } = useStore()
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
|
|||||||
@ -160,10 +160,10 @@ const PermissionConst = {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ABOUT_READ:new Permission('OTHER:READ'),
|
||||||
|
SWITCH_LANGUAGE:new Permission('OTHER:READ+EDIT'),
|
||||||
|
CHANGE_PASSWORD:new Permission('OTHER:READ+CREATE'),
|
||||||
SYSTEM_API_KEY_EDIT:new Permission('OTHER: READ+EDIT')
|
SYSTEM_API_KEY_EDIT:new Permission('OTHER:READ+DELETE')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -53,6 +53,22 @@ export class Permission {
|
|||||||
const { user } = useStore()
|
const { user } = useStore()
|
||||||
return `${this.permission}:/WORKSPACE/${user.getWorkspaceId()}/${resource}/${resource_id}`
|
return `${this.permission}:/WORKSPACE/${user.getWorkspaceId()}/${resource}/${resource_id}`
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param resource_id 资源id
|
||||||
|
* @returns 工作空间下知识库资源权限
|
||||||
|
*/
|
||||||
|
getKnowledgeWorkspaceResourcePermission=( resource_id: string)=>{
|
||||||
|
return this.getWorkspaceResourcePermission('KNOWLEDGE',resource_id)
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param resource_id 资源id
|
||||||
|
* @returns 工作空间下应用资源权限
|
||||||
|
*/
|
||||||
|
getApplicationWorkspaceResourcePermission=( resource_id: string)=>{
|
||||||
|
return this.getWorkspaceResourcePermission('APPLICATION',resource_id)
|
||||||
|
}
|
||||||
toString() {
|
toString() {
|
||||||
return this.permission
|
return this.permission
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,29 +6,19 @@
|
|||||||
<div class="resource-authorization__left border-r p-8">
|
<div class="resource-authorization__left border-r p-8">
|
||||||
<div class="p-8">
|
<div class="p-8">
|
||||||
<h4 class="mb-12">{{ $t('views.resourceAuthorization.member') }}</h4>
|
<h4 class="mb-12">{{ $t('views.resourceAuthorization.member') }}</h4>
|
||||||
<el-input
|
<el-input v-model="filterText" :placeholder="$t('common.search')" prefix-icon="Search" clearable />
|
||||||
v-model="filterText"
|
|
||||||
:placeholder="$t('common.search')"
|
|
||||||
prefix-icon="Search"
|
|
||||||
clearable
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="list-height-left">
|
<div class="list-height-left">
|
||||||
<el-scrollbar>
|
<el-scrollbar>
|
||||||
<common-list
|
<common-list :data="filterMember" class="mt-8" v-loading="loading" @click="clickMemberHandle"
|
||||||
:data="filterMember"
|
:default-active="currentUser">
|
||||||
class="mt-8"
|
|
||||||
v-loading="loading"
|
|
||||||
@click="clickMemberHandle"
|
|
||||||
:default-active="currentUser"
|
|
||||||
>
|
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<div class="flex-between">
|
<div class="flex-between">
|
||||||
<div>
|
<div>
|
||||||
<span class="mr-8">{{ row.nick_name }}</span>
|
<span class="mr-8">{{ row.nick_name }}</span>
|
||||||
<el-tag v-if="isManage(row.type)" class="default-tag">{{
|
<el-tag v-if="isManage(row.type)" class="default-tag">{{
|
||||||
$t('views.resourceAuthorization.manage')
|
$t('views.resourceAuthorization.manage')
|
||||||
}}</el-tag>
|
}}</el-tag>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -40,20 +30,10 @@
|
|||||||
<div class="resource-authorization__table">
|
<div class="resource-authorization__table">
|
||||||
<h4 class="mb-4">{{ $t('views.resourceAuthorization.permissionSetting') }}</h4>
|
<h4 class="mb-4">{{ $t('views.resourceAuthorization.permissionSetting') }}</h4>
|
||||||
<el-tabs v-model="activeName" class="resource-authorization__tabs">
|
<el-tabs v-model="activeName" class="resource-authorization__tabs">
|
||||||
<el-tab-pane
|
<el-tab-pane v-for="(item, index) in settingTags" :key="item.value" :label="item.label"
|
||||||
v-for="(item, index) in settingTags"
|
:name="item.value">
|
||||||
:key="item.value"
|
<PermissionSetting :key="index" :data="item.data" :type="item.value" :tableHeight="tableHeight"
|
||||||
:label="item.label"
|
:manage="isManage(currentType)" @refreshData="refreshData"></PermissionSetting>
|
||||||
:name="item.value"
|
|
||||||
>
|
|
||||||
<PermissionSetting
|
|
||||||
:key="index"
|
|
||||||
:data="item.data"
|
|
||||||
:type="item.value"
|
|
||||||
:tableHeight="tableHeight"
|
|
||||||
:manage="isManage(currentType)"
|
|
||||||
@refreshData="refreshData"
|
|
||||||
></PermissionSetting>
|
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</div>
|
</div>
|
||||||
@ -116,23 +96,31 @@ function isManage(type: string) {
|
|||||||
return type === 'manage'
|
return type === 'manage'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const flotTree = (tree: Array<any>, result: Array<any>) => {
|
||||||
|
tree.forEach(tItem => {
|
||||||
|
result.push(tItem)
|
||||||
|
if (tItem.children) {
|
||||||
|
flotTree(tItem.children, result)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return result
|
||||||
|
}
|
||||||
function submitPermissions() {
|
function submitPermissions() {
|
||||||
const obj: any = {
|
const user_resource_permission_list = settingTags.map((item: any) => {
|
||||||
user_resource_permission_list: [],
|
return flotTree(item.data, []).filter((v: any) => !v.isFolder).map((v: any) => {
|
||||||
}
|
return {
|
||||||
settingTags.map((item: any) => {
|
|
||||||
item.data.map((v: any) => {
|
|
||||||
obj['user_resource_permission_list'].push({
|
|
||||||
target_id: v.id,
|
target_id: v.id,
|
||||||
auth_target_type: v.auth_target_type,
|
auth_target_type: item.value,
|
||||||
permission: v.permission,
|
permission: v.permission,
|
||||||
auth_type: 'RESOURCE_PERMISSION_GROUP',
|
auth_type: 'RESOURCE_PERMISSION_GROUP',
|
||||||
})
|
}
|
||||||
})
|
})
|
||||||
})
|
}).reduce((pre, next) => {
|
||||||
AuthorizationApi.putResourceAuthorization(currentUser.value, obj, rLoading).then(() => {
|
return [...pre, ...next]
|
||||||
|
}, [])
|
||||||
|
AuthorizationApi.putResourceAuthorization(currentUser.value, { user_resource_permission_list: user_resource_permission_list }, rLoading).then(() => {
|
||||||
MsgSuccess(t('common.submitSuccess'))
|
MsgSuccess(t('common.submitSuccess'))
|
||||||
ResourcePermissions(currentUser.value)
|
getWholeTree(currentUser.value)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,9 @@
|
|||||||
:currentNodeKey="currentFolder?.id"
|
:currentNodeKey="currentFolder?.id"
|
||||||
@handleNodeClick="folderClickHandel"
|
@handleNodeClick="folderClickHandel"
|
||||||
@refreshTree ="refreshFolder"
|
@refreshTree ="refreshFolder"
|
||||||
shareTitle="views.system.share_tool"
|
:shareTitle="hasPermission(new ComplexPermission(
|
||||||
|
[RoleConst.ADMIN],[PermissionConst.SHARED_TOOL_READ],[EditionConst.IS_EE],'OR'
|
||||||
|
), 'OR')?'views.system.share_tool':null"
|
||||||
isShared
|
isShared
|
||||||
class="p-8"
|
class="p-8"
|
||||||
/>
|
/>
|
||||||
@ -319,9 +321,10 @@ import { t } from '@/locales'
|
|||||||
import { isAppIcon } from '@/utils/common'
|
import { isAppIcon } from '@/utils/common'
|
||||||
import { MsgSuccess, MsgConfirm, MsgError } from '@/utils/message'
|
import { MsgSuccess, MsgConfirm, MsgError } from '@/utils/message'
|
||||||
import SharedWorkspace from '@/views/shared/tool-shared/SharedWorkspace.vue'
|
import SharedWorkspace from '@/views/shared/tool-shared/SharedWorkspace.vue'
|
||||||
import { PermissionConst, RoleConst } from '@/utils/permission/data'
|
import { EditionConst, PermissionConst, RoleConst } from '@/utils/permission/data'
|
||||||
import { hasPermission } from '@/utils/permission/index'
|
import { hasPermission } from '@/utils/permission/index'
|
||||||
import { FolderSource } from '@/enums/common'
|
import { FolderSource } from '@/enums/common'
|
||||||
|
import { ComplexPermission } from '@/utils/permission/type'
|
||||||
|
|
||||||
const { folder, user } = useStore()
|
const { folder, user } = useStore()
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user