From 73b212edc4e6609828eacd7eff0bec2f3fb85ea2 Mon Sep 17 00:00:00 2001 From: xiaoxian521 <1923740402@qq.com> Date: Sun, 11 Aug 2024 19:08:13 +0800 Subject: [PATCH] chore: update --- locales/en.yaml | 2 + locales/zh-CN.yaml | 2 + mock/asyncRoutes.ts | 35 +++++-- mock/login.ts | 8 +- mock/system.ts | 128 +++++++++++++++++++++++++- src/utils/auth.ts | 8 +- src/views/permission/button/index.vue | 2 +- src/views/permission/button/perms.vue | 116 +++++++++++++++++++++++ 8 files changed, 278 insertions(+), 23 deletions(-) create mode 100644 src/views/permission/button/perms.vue diff --git a/locales/en.yaml b/locales/en.yaml index d02f36f93..3793277b1 100644 --- a/locales/en.yaml +++ b/locales/en.yaml @@ -125,6 +125,8 @@ menus: purePermission: Permission Manage purePermissionPage: Page Permission purePermissionButton: Button Permission + purePermissionButtonRouter: Route return button permission + purePermissionButtonLogin: Login interface return button permission pureTabs: Tabs Operate pureGuide: Guide pureAble: Able diff --git a/locales/zh-CN.yaml b/locales/zh-CN.yaml index 6ce420969..7be27a8ec 100644 --- a/locales/zh-CN.yaml +++ b/locales/zh-CN.yaml @@ -125,6 +125,8 @@ menus: purePermission: 权限管理 purePermissionPage: 页面权限 purePermissionButton: 按钮权限 + purePermissionButtonRouter: 路由返回按钮权限 + purePermissionButtonLogin: 登录接口返回按钮权限 pureTabs: 标签页操作 pureGuide: 引导页 pureAble: 功能 diff --git a/mock/asyncRoutes.ts b/mock/asyncRoutes.ts index 4f2fab739..5ca555977 100644 --- a/mock/asyncRoutes.ts +++ b/mock/asyncRoutes.ts @@ -123,17 +123,34 @@ const permissionRouter = { } }, { - path: "/permission/button/index", - name: "PermissionButton", + path: "/permission/button", meta: { title: "menus.purePermissionButton", - roles: ["admin", "common"], - auths: [ - "permission:btn:add", - "permission:btn:edit", - "permission:btn:delete" - ] - } + roles: ["admin", "common"] + }, + children: [ + { + path: "/permission/button/router", + component: "permission/button/index", + name: "PermissionButtonRouter", + meta: { + title: "menus.purePermissionButtonRouter", + auths: [ + "permission:btn:add", + "permission:btn:edit", + "permission:btn:delete" + ] + } + }, + { + path: "/permission/button/login", + component: "permission/button/perms", + name: "PermissionButtonLogin", + meta: { + title: "menus.purePermissionButtonLogin" + } + } + ] } ] }; diff --git a/mock/login.ts b/mock/login.ts index 0ebb63d84..55897d8f4 100644 --- a/mock/login.ts +++ b/mock/login.ts @@ -16,11 +16,7 @@ export default defineFakeRoute([ // 一个用户可能有多个角色 roles: ["admin"], // 按钮级别权限 - permissions: [ - "permission:btn:add", - "permission:btn:edit", - "permission:btn:delete" - ], + permissions: ["*:*:*"], accessToken: "eyJhbGciOiJIUzUxMiJ9.admin", refreshToken: "eyJhbGciOiJIUzUxMiJ9.adminRefresh", expires: "2030/10/30 00:00:00" @@ -34,7 +30,7 @@ export default defineFakeRoute([ username: "common", nickname: "小林", roles: ["common"], - permissions: [], + permissions: ["permission:btn:add", "permission:btn:edit"], accessToken: "eyJhbGciOiJIUzUxMiJ9.common", refreshToken: "eyJhbGciOiJIUzUxMiJ9.commonRefresh", expires: "2030/10/30 00:00:00" diff --git a/mock/system.ts b/mock/system.ts index a4e33f716..5c9172cd8 100644 --- a/mock/system.ts +++ b/mock/system.ts @@ -696,7 +696,7 @@ export default defineFakeRoute([ menuType: 0, title: "menus.purePermissionButton", name: "PermissionButton", - path: "/permission/button/index", + path: "/permission/button", component: "", rank: null, redirect: "", @@ -717,6 +717,30 @@ export default defineFakeRoute([ { parentId: 202, id: 203, + menuType: 0, + title: "menus.purePermissionButtonRouter", + name: "PermissionButtonRouter", + path: "/permission/button/router", + component: "permission/button/index", + rank: null, + redirect: "", + icon: "", + extraIcon: "", + enterTransition: "", + leaveTransition: "", + activePath: "", + auths: "", + frameSrc: "", + frameLoading: true, + keepAlive: false, + hiddenTag: false, + fixedTag: false, + showLink: true, + showParent: false + }, + { + parentId: 203, + id: 210, menuType: 3, title: "添加", name: "", @@ -739,8 +763,8 @@ export default defineFakeRoute([ showParent: false }, { - parentId: 202, - id: 204, + parentId: 203, + id: 211, menuType: 3, title: "修改", name: "", @@ -762,9 +786,105 @@ export default defineFakeRoute([ showLink: true, showParent: false }, + { + parentId: 203, + id: 212, + menuType: 3, + title: "删除", + name: "", + path: "", + component: "", + rank: null, + redirect: "", + icon: "", + extraIcon: "", + enterTransition: "", + leaveTransition: "", + activePath: "", + auths: "permission:btn:delete", + frameSrc: "", + frameLoading: true, + keepAlive: false, + hiddenTag: false, + fixedTag: false, + showLink: true, + showParent: false + }, { parentId: 202, - id: 205, + id: 204, + menuType: 0, + title: "menus.purePermissionButtonLogin", + name: "PermissionButtonLogin", + path: "/permission/button/login", + component: "permission/button/perms", + rank: null, + redirect: "", + icon: "", + extraIcon: "", + enterTransition: "", + leaveTransition: "", + activePath: "", + auths: "", + frameSrc: "", + frameLoading: true, + keepAlive: false, + hiddenTag: false, + fixedTag: false, + showLink: true, + showParent: false + }, + { + parentId: 204, + id: 220, + menuType: 3, + title: "添加", + name: "", + path: "", + component: "", + rank: null, + redirect: "", + icon: "", + extraIcon: "", + enterTransition: "", + leaveTransition: "", + activePath: "", + auths: "permission:btn:add", + frameSrc: "", + frameLoading: true, + keepAlive: false, + hiddenTag: false, + fixedTag: false, + showLink: true, + showParent: false + }, + { + parentId: 204, + id: 221, + menuType: 3, + title: "修改", + name: "", + path: "", + component: "", + rank: null, + redirect: "", + icon: "", + extraIcon: "", + enterTransition: "", + leaveTransition: "", + activePath: "", + auths: "permission:btn:edit", + frameSrc: "", + frameLoading: true, + keepAlive: false, + hiddenTag: false, + fixedTag: false, + showLink: true, + showParent: false + }, + { + parentId: 204, + id: 222, menuType: 3, title: "删除", name: "", diff --git a/src/utils/auth.ts b/src/utils/auth.ts index 8b8603ad4..937846ac9 100644 --- a/src/utils/auth.ts +++ b/src/utils/auth.ts @@ -85,14 +85,14 @@ export function setToken(data: DataInfo) { }); } - if (data.username && data.roles && data.permissions) { - const { username, roles, permissions } = data; + if (data.username && data.roles) { + const { username, roles } = data; setUserKey({ avatar: data?.avatar ?? "", username, nickname: data?.nickname ?? "", roles, - permissions + permissions: data?.permissions ?? [] }); } else { const avatar = @@ -130,8 +130,10 @@ export const formatToken = (token: string): string => { /** 是否有按钮级别的权限(根据登录接口返回的`permissions`字段进行判断)*/ export const hasPerms = (value: string | Array): boolean => { if (!value) return false; + const allPerms = "*:*:*"; const { permissions } = useUserStoreHook(); if (!permissions) return false; + if (permissions.length === 1 && permissions[0] === allPerms) return true; const isAuths = isString(value) ? permissions.includes(value) : isIncludeAllChildren(value, permissions); diff --git a/src/views/permission/button/index.vue b/src/views/permission/button/index.vue index 20fc799dd..c1d5297cc 100644 --- a/src/views/permission/button/index.vue +++ b/src/views/permission/button/index.vue @@ -2,7 +2,7 @@ import { hasAuth, getAuths } from "@/router/utils"; defineOptions({ - name: "PermissionButton" + name: "PermissionButtonRouter" }); diff --git a/src/views/permission/button/perms.vue b/src/views/permission/button/perms.vue new file mode 100644 index 000000000..5a256a254 --- /dev/null +++ b/src/views/permission/button/perms.vue @@ -0,0 +1,116 @@ + + +