From 3ae432ac75f253c4a3a701c7e1be3ec53edb38af Mon Sep 17 00:00:00 2001 From: Ryan Wang Date: Fri, 30 Sep 2022 17:48:19 +0800 Subject: [PATCH] feat: refine ui permissions (#628) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #### What type of PR is this? /kind feature /kind improvement /milestone 2.0 #### What this PR does / why we need it: 完善 UI 权限控制。适配 https://github.com/halo-dev/halo/pull/2488 #### Which issue(s) this PR fixes: Fixes https://github.com/halo-dev/halo/issues/2342 #### Special notes for your reviewer: /cc @halo-dev/sig-halo-console 测试方式: 1. Halo 需要使用 https://github.com/halo-dev/halo/issues/2342 PR 的分支。 2. 创建新的角色,并勾选需要测试的权限。 3. 创建新的用户并赋予新的角色。 4. 测试操作权限。 #### Does this PR introduce a user-facing change? ```release-note 完善 UI 权限控制 ``` --- src/main.ts | 7 ++-- .../contents/attachments/AttachmentList.vue | 41 ++++++++++++++++--- .../components/AttachmentGroupList.vue | 6 ++- src/modules/contents/attachments/module.ts | 1 + src/modules/contents/comments/CommentList.vue | 5 ++- .../comments/components/CommentListItem.vue | 13 +++++- .../comments/components/ReplyListItem.vue | 9 +++- src/modules/contents/comments/module.ts | 1 + src/modules/contents/pages/SinglePageList.vue | 24 +++++++++-- .../contents/pages/layouts/PageLayout.vue | 6 ++- src/modules/contents/pages/module.ts | 2 + src/modules/contents/posts/PostList.vue | 30 +++++++++++--- .../posts/categories/CategoryList.vue | 12 +++++- .../components/CategoryListItem.vue | 3 ++ src/modules/contents/posts/module.ts | 4 ++ src/modules/contents/posts/tags/TagList.vue | 8 +++- .../dashboard/widgets/QuickLinkWidget.vue | 19 ++++++++- src/modules/interface/menus/Menus.vue | 7 +++- .../menus/components/MenuEditingModal.vue | 4 +- .../menus/components/MenuItemListItem.vue | 9 +++- .../interface/menus/components/MenuList.vue | 18 +++++--- src/modules/interface/menus/module.ts | 1 + src/modules/interface/themes/ThemeDetail.vue | 2 +- .../themes/components/ThemeListModal.vue | 20 +++++++-- .../interface/themes/layouts/ThemeLayout.vue | 1 + src/modules/interface/themes/module.ts | 2 + .../plugins/components/PluginListItem.vue | 15 ++++--- src/modules/system/roles/RoleList.vue | 8 +++- src/modules/system/users/UserList.vue | 24 +++++++---- src/utils/permission.ts | 34 +++++++++++++++ 30 files changed, 278 insertions(+), 58 deletions(-) diff --git a/src/main.ts b/src/main.ts index 9539c0cb..20ab4841 100644 --- a/src/main.ts +++ b/src/main.ts @@ -173,9 +173,10 @@ async function loadCurrentUser() { app.directive( "permission", (el: HTMLElement, binding: DirectiveBinding) => { - const uiPermissions = Array.from( - currentPermissions.uiPermissions - ); + // const uiPermissions = Array.from( + // currentPermissions.uiPermissions + // ); + const uiPermissions = Array.from(["system:attachments:view"]); const { value } = binding; const { any, enable } = binding.modifiers; diff --git a/src/modules/contents/attachments/AttachmentList.vue b/src/modules/contents/attachments/AttachmentList.vue index a31e5f78..bb353018 100644 --- a/src/modules/contents/attachments/AttachmentList.vue +++ b/src/modules/contents/attachments/AttachmentList.vue @@ -38,6 +38,9 @@ import cloneDeep from "lodash.clonedeep"; import { isImage } from "@/utils/image"; import { useRouteQuery } from "@vueuse/router"; import { useFetchAttachmentGroup } from "./composables/use-attachment-group"; +import { usePermission } from "@/utils/permission"; + +const { currentUserHasPermission } = usePermission(); const policyVisible = ref(false); const uploadVisible = ref(false); @@ -233,13 +236,21 @@ onMounted(() => {