| | |
| | | import { RouteLocationNormalized, RouteRecordRaw } from 'vue-router'; |
| | | import { useUserStore } from '@/store'; |
| | | import { RouteLocationNormalized, RouteRecordRaw } from "vue-router"; |
| | | import { useUserStore } from "@/store"; |
| | | import { getUserInfo, getUserResources } from "@/utils/auth"; |
| | | |
| | | export default function usePermission() { |
| | | const userStore = useUserStore(); |
| | |
| | | accessRouter(route: RouteLocationNormalized | RouteRecordRaw) { |
| | | //遍历userStore.resource |
| | | let isok = false; |
| | | let user = getUserResources(); |
| | | let jsonObject = {}; |
| | | let resurces: any; |
| | | if (userStore.resources) { |
| | | userStore.resources.forEach(r => { |
| | | resurces = userStore.resources; |
| | | } else { |
| | | if (user) { |
| | | resurces = JSON.parse(user); |
| | | } |
| | | } |
| | | if (resurces) { |
| | | resurces.forEach(r => { |
| | | if ((r.menuType == 0 || r.menuType == 3) && (route.name == r.component || route.path == r.component)) { |
| | | isok = true; |
| | | } |
| | |
| | | } |
| | | |
| | | }, |
| | | findFirstPermissionRoute(_routers: any, role = 'admin') { |
| | | findFirstPermissionRoute(_routers: any, role = "admin") { |
| | | const cloneRouters = [..._routers]; |
| | | while (cloneRouters.length) { |
| | | const firstElement = cloneRouters.shift(); |
| | | if ( |
| | | firstElement?.meta?.roles?.find((el: string[]) => { |
| | | return el.includes('*') || el.includes(role); |
| | | return el.includes("*") || el.includes(role); |
| | | }) |
| | | ) |
| | | return { name: firstElement.name }; |
| | |
| | | } |
| | | } |
| | | return null; |
| | | }, |
| | | } |
| | | // You can add any rules you want |
| | | }; |
| | | } |
| | |
| | | getUserInfo, |
| | | LoginData, |
| | | } from '@/api/user'; |
| | | import { setToken, clearToken,setUserInfo } from '@/utils/auth'; |
| | | import { setToken, clearToken,setUserInfo,setUserResources } from '@/utils/auth'; |
| | | import { removeRouteListener } from '@/utils/route-listener'; |
| | | import { UserState } from './types'; |
| | | import useAppStore from '../app'; |
| | |
| | | }; |
| | | this.resources=res.data.resources; |
| | | setUserInfo(JSON.stringify(userInfo)); |
| | | setUserResources(JSON.stringify(this.resources)) |
| | | } catch (err) { |
| | | clearToken(); |
| | | throw err; |
| | |
| | | const TOKEN_KEY = 'token'; |
| | | const Authorization = 'Authorization'; |
| | | const UserInfo = 'userInfo'; |
| | | const UserResources='userResources' |
| | | |
| | | const isLogin = () => { |
| | | return !!localStorage.getItem(TOKEN_KEY); |
| | |
| | | localStorage.setItem(UserInfo, info); |
| | | }; |
| | | |
| | | export { isLogin, getToken, setToken, clearToken,getAuthorization, setAuthorization, getUserInfo, setUserInfo}; |
| | | const getUserResources = () => { |
| | | return localStorage.getItem(UserResources); |
| | | }; |
| | | |
| | | const setUserResources = (info: string) => { |
| | | localStorage.setItem(UserResources, info); |
| | | }; |
| | | |
| | | export { isLogin, getToken, setToken, clearToken,getAuthorization, setAuthorization, getUserInfo, setUserInfo,setUserResources,getUserResources}; |