|
@@ -1,5 +1,6 @@
|
|
|
-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() {
|
|
export default function usePermission() {
|
|
|
const userStore = useUserStore();
|
|
const userStore = useUserStore();
|
|
@@ -7,8 +8,18 @@ export default function usePermission() {
|
|
|
accessRouter(route: RouteLocationNormalized | RouteRecordRaw) {
|
|
accessRouter(route: RouteLocationNormalized | RouteRecordRaw) {
|
|
|
//遍历userStore.resource
|
|
//遍历userStore.resource
|
|
|
let isok = false;
|
|
let isok = false;
|
|
|
|
|
+ let user = getUserResources();
|
|
|
|
|
+ let jsonObject = {};
|
|
|
|
|
+ let resurces: any;
|
|
|
if (userStore.resources) {
|
|
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)) {
|
|
if ((r.menuType == 0 || r.menuType == 3) && (route.name == r.component || route.path == r.component)) {
|
|
|
isok = true;
|
|
isok = true;
|
|
|
}
|
|
}
|
|
@@ -24,13 +35,13 @@ export default function usePermission() {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
},
|
|
},
|
|
|
- findFirstPermissionRoute(_routers: any, role = 'admin') {
|
|
|
|
|
|
|
+ findFirstPermissionRoute(_routers: any, role = "admin") {
|
|
|
const cloneRouters = [..._routers];
|
|
const cloneRouters = [..._routers];
|
|
|
while (cloneRouters.length) {
|
|
while (cloneRouters.length) {
|
|
|
const firstElement = cloneRouters.shift();
|
|
const firstElement = cloneRouters.shift();
|
|
|
if (
|
|
if (
|
|
|
firstElement?.meta?.roles?.find((el: string[]) => {
|
|
firstElement?.meta?.roles?.find((el: string[]) => {
|
|
|
- return el.includes('*') || el.includes(role);
|
|
|
|
|
|
|
+ return el.includes("*") || el.includes(role);
|
|
|
})
|
|
})
|
|
|
)
|
|
)
|
|
|
return { name: firstElement.name };
|
|
return { name: firstElement.name };
|
|
@@ -39,7 +50,7 @@ export default function usePermission() {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
return null;
|
|
return null;
|
|
|
- },
|
|
|
|
|
|
|
+ }
|
|
|
// You can add any rules you want
|
|
// You can add any rules you want
|
|
|
};
|
|
};
|
|
|
}
|
|
}
|