diff --git a/ui/src/layout/layout-header/avatar/index.vue b/ui/src/layout/layout-header/avatar/index.vue index 28e69701b..9f89f6e29 100644 --- a/ui/src/layout/layout-header/avatar/index.vue +++ b/ui/src/layout/layout-header/avatar/index.vue @@ -28,19 +28,22 @@ - + {{ $t('views.login.resetPassword') }} -
- +
+ + {{ $t('layout.apiKey') }}
- +
{{ $t('layout.language') }} @@ -73,7 +76,9 @@ - + {{ $t('layout.about.title') }} @@ -104,9 +109,10 @@ import ResetPassword from './ResetPassword.vue' import AboutDialog from './AboutDialog.vue' // import UserPwdDialog from '@/views/user-manage/component/UserPwdDialog.vue' import APIKeyDialog from './APIKeyDialog.vue' -import { ComplexPermission } from '@/utils/permission/type' -import { langList } from '@/locales/index' -import { EditionConst } from '@/utils/permission/data' +import {ComplexPermission} from '@/utils/permission/type' +import {langList} from '@/locales/index' +import { hasPermission } from '@/utils/permission' +import { PermissionConst, RoleConst,EditionConst } from '@/utils/permission/data' const { user, login } = useStore() const router = useRouter() diff --git a/ui/src/utils/permission/data.ts b/ui/src/utils/permission/data.ts index 8b26e1a29..8c449d640 100644 --- a/ui/src/utils/permission/data.ts +++ b/ui/src/utils/permission/data.ts @@ -160,10 +160,10 @@ const PermissionConst = { - - - - SYSTEM_API_KEY_EDIT:new Permission('OTHER: READ+EDIT') + 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+DELETE') diff --git a/ui/src/utils/permission/type.ts b/ui/src/utils/permission/type.ts index 70772deac..553096123 100644 --- a/ui/src/utils/permission/type.ts +++ b/ui/src/utils/permission/type.ts @@ -53,6 +53,22 @@ export class Permission { const { user } = useStore() 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() { return this.permission } diff --git a/ui/src/views/resource-authorization/index.vue b/ui/src/views/resource-authorization/index.vue index 6f068a1ef..5febd3bde 100644 --- a/ui/src/views/resource-authorization/index.vue +++ b/ui/src/views/resource-authorization/index.vue @@ -6,29 +6,19 @@

{{ $t('views.resourceAuthorization.member') }}

- +
- + @@ -40,20 +30,10 @@

{{ $t('views.resourceAuthorization.permissionSetting') }}

- - + +
@@ -116,23 +96,31 @@ function isManage(type: string) { return type === 'manage' } +const flotTree = (tree: Array, result: Array) => { + tree.forEach(tItem => { + result.push(tItem) + if (tItem.children) { + flotTree(tItem.children, result) + } + }) + return result +} function submitPermissions() { - const obj: any = { - user_resource_permission_list: [], - } - settingTags.map((item: any) => { - item.data.map((v: any) => { - obj['user_resource_permission_list'].push({ + const user_resource_permission_list = settingTags.map((item: any) => { + return flotTree(item.data, []).filter((v: any) => !v.isFolder).map((v: any) => { + return { target_id: v.id, - auth_target_type: v.auth_target_type, + auth_target_type: item.value, permission: v.permission, auth_type: 'RESOURCE_PERMISSION_GROUP', - }) + } }) - }) - AuthorizationApi.putResourceAuthorization(currentUser.value, obj, rLoading).then(() => { + }).reduce((pre, next) => { + return [...pre, ...next] + }, []) + AuthorizationApi.putResourceAuthorization(currentUser.value, { user_resource_permission_list: user_resource_permission_list }, rLoading).then(() => { MsgSuccess(t('common.submitSuccess')) - ResourcePermissions(currentUser.value) + getWholeTree(currentUser.value) }) } diff --git a/ui/src/views/tool/index.vue b/ui/src/views/tool/index.vue index 6fd77c345..690a15206 100644 --- a/ui/src/views/tool/index.vue +++ b/ui/src/views/tool/index.vue @@ -8,7 +8,9 @@ :currentNodeKey="currentFolder?.id" @handleNodeClick="folderClickHandel" @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 class="p-8" /> @@ -319,9 +321,10 @@ import { t } from '@/locales' import { isAppIcon } from '@/utils/common' import { MsgSuccess, MsgConfirm, MsgError } from '@/utils/message' 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 { FolderSource } from '@/enums/common' +import { ComplexPermission } from '@/utils/permission/type' const { folder, user } = useStore()