41 lines
1.1 KiB
JavaScript
41 lines
1.1 KiB
JavaScript
|
|
import NProgress from "nprogress" // progress bar
|
||
|
|
import { useUserStore } from "@/store"
|
||
|
|
// userInfo守卫
|
||
|
|
export default function setupUserLoginInfoGuard(router) {
|
||
|
|
router.beforeEach(async (to, from, next) => {
|
||
|
|
NProgress.start()
|
||
|
|
const userStore = useUserStore()
|
||
|
|
if (userStore.isLogin()) {
|
||
|
|
if (userStore.role) {
|
||
|
|
next()
|
||
|
|
} else {
|
||
|
|
try {
|
||
|
|
await userStore.info()
|
||
|
|
next()
|
||
|
|
} catch (error) {
|
||
|
|
await userStore.logout()
|
||
|
|
next({
|
||
|
|
name: "login",
|
||
|
|
query: {
|
||
|
|
redirect: to.name,
|
||
|
|
...to.query
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
if (to.name === "login") {
|
||
|
|
next()
|
||
|
|
return
|
||
|
|
}
|
||
|
|
next({
|
||
|
|
name: "login",
|
||
|
|
query: {
|
||
|
|
redirect: to.name,
|
||
|
|
...to.query
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|