mirror of https://github.com/halo-dev/halo
38 lines
946 B
TypeScript
38 lines
946 B
TypeScript
![]() |
import { useGlobalInfoStore } from "@/stores/global-info";
|
||
|
import { useUserStore } from "@/stores/user";
|
||
![]() |
import type { Router } from "vue-router";
|
||
|
|
||
|
export function setupCheckStatesGuard(router: Router) {
|
||
|
router.beforeEach(async (to, from, next) => {
|
||
![]() |
const userStore = useUserStore();
|
||
|
const { globalInfo } = useGlobalInfoStore();
|
||
|
const { userInitialized, dataInitialized } = globalInfo || {};
|
||
|
|
||
|
if (to.name === "Setup" && userInitialized) {
|
||
|
next({ name: "Dashboard" });
|
||
![]() |
return;
|
||
![]() |
}
|
||
|
|
||
![]() |
if (to.name === "SetupInitialData" && dataInitialized) {
|
||
|
next({ name: "Dashboard" });
|
||
|
return;
|
||
|
}
|
||
![]() |
|
||
![]() |
if (userInitialized === false && to.name !== "Setup") {
|
||
![]() |
next({ name: "Setup" });
|
||
|
return;
|
||
|
}
|
||
|
|
||
![]() |
if (
|
||
|
dataInitialized === false &&
|
||
|
!userStore.isAnonymous &&
|
||
|
to.name !== "SetupInitialData"
|
||
|
) {
|
||
|
next({ name: "SetupInitialData" });
|
||
|
return;
|
||
|
}
|
||
|
|
||
![]() |
next();
|
||
|
});
|
||
|
}
|