From 38df362a86c324dc76558a3a3518f4aed7c6458d Mon Sep 17 00:00:00 2001 From: zhangxuelin <959231531@qq.com> Date: Thu, 13 Feb 2025 14:32:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AD=A6=E6=A0=A1=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=B1=95=E7=A4=BA=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/src/layout/components/Aside.vue | 5 +- src/renderer/src/utils/permission.js | 51 ++++++++++++++++++++ 2 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 src/renderer/src/utils/permission.js diff --git a/src/renderer/src/layout/components/Aside.vue b/src/renderer/src/layout/components/Aside.vue index ecc7566..8aa998e 100644 --- a/src/renderer/src/layout/components/Aside.vue +++ b/src/renderer/src/layout/components/Aside.vue @@ -23,7 +23,7 @@
  • 加入学校
  • 个人中心
  • -
  • 学校管理
  • +
  • 学校管理
  • 班级中心
  • 退出登录
  • @@ -65,7 +65,7 @@ import pkc from "../../../../../package.json" import defaultUserImg from '@/assets/images/img-avatar.png' import { sessionStore } from '@/utils/store' import {toLinkLeftWeb} from "@/utils/tool" - +import { checkRole } from '@/utils/permission' const { ipcRenderer } = window.electron || {} const dev_api = ref(import.meta.env.VITE_APP_BASE_API) @@ -86,6 +86,7 @@ const defaultImg = ['/img/avatar-default.jpg','/images/img-avatar.png','/src/ass //是否是基地人员 const isStadium = () => { + console.log('isStadium',userStore.roles ) let user = userStore.user let roles = user.roles return roles.some(item => item.roleKey === 'stadium') diff --git a/src/renderer/src/utils/permission.js b/src/renderer/src/utils/permission.js new file mode 100644 index 0000000..93fee87 --- /dev/null +++ b/src/renderer/src/utils/permission.js @@ -0,0 +1,51 @@ +import useUserStore from '@/store/modules/user' + +/** + * 字符权限校验 + * @param {Array} value 校验值 + * @returns {Boolean} + */ +export function checkPermi(value) { + if (value && value instanceof Array && value.length > 0) { + const permissions = useUserStore().permissions + const permissionDatas = value + const all_permission = "*:*:*"; + + const hasPermission = permissions.some(permission => { + return all_permission === permission || permissionDatas.includes(permission) + }) + + if (!hasPermission) { + return false + } + return true + } else { + console.error(`need roles! Like checkPermi="['system:user:add','system:user:edit']"`) + return false + } +} + +/** + * 角色权限校验 + * @param {Array} value 校验值 + * @returns {Boolean} + */ +export function checkRole(value) { + if (value && value instanceof Array && value.length > 0) { + const roles = useUserStore().roles + const permissionRoles = value + const super_admin = "admin"; + + const hasRole = roles.some(role => { + return super_admin === role || permissionRoles.includes(role) + }) + + if (!hasRole) { + return false + } + return true + } else { + console.error(`need roles! Like checkRole="['admin','editor']"`) + return false + } +} \ No newline at end of file