44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
import { boot } from 'quasar/wrappers';
|
||
import { useUserStore } from 'src/vueLib/login/userStore';
|
||
import { appApi } from './axios';
|
||
import { getLocalLastRoute, setLocalLastRoute } from 'src/localstorage/localStorage';
|
||
|
||
export default boot(async ({ router }) => {
|
||
const userStore = useUserStore();
|
||
// load user
|
||
try {
|
||
const { data } = await appApi.get('/login/me');
|
||
|
||
data.role.role = data.role;
|
||
await userStore.setUser(data);
|
||
} catch {
|
||
/* ignore error */
|
||
}
|
||
|
||
// Restore logic after router is ready but before navigation
|
||
router.isReady().then(() => {
|
||
const lastRoute = getLocalLastRoute();
|
||
const currentPath = router.currentRoute.value.fullPath;
|
||
|
||
// Restore only if:
|
||
// - we’re on root ("/" or "/#/"), and
|
||
// - a last route exists, and
|
||
// - the user is authenticated
|
||
if (
|
||
lastRoute &&
|
||
['/', '/#/', '/#/index.html'].includes(currentPath) &&
|
||
userStore.isAuthenticated
|
||
) {
|
||
router.replace(lastRoute).catch(() => {});
|
||
}
|
||
});
|
||
|
||
// Save the route after every successful navigation
|
||
router.afterEach((to) => {
|
||
// Don't save login page as "last route"
|
||
if (to.path !== '/login' && to.path !== '/') {
|
||
setLocalLastRoute(to.fullPath);
|
||
}
|
||
});
|
||
});
|