2022-05-21 01:07:31 +02:00
|
|
|
import { useUserStore } from "@/stores/user";
|
|
|
|
import OauthCallbackViewVue from "@/views/oauth/OauthCallbackView.vue";
|
|
|
|
import OauthRedirectViewVue from "@/views/oauth/OauthRedirectView.vue";
|
|
|
|
import { createRouter, createWebHistory } from "vue-router";
|
|
|
|
import HomeView from "../views/HomeView.vue";
|
|
|
|
|
|
|
|
declare module "vue-router" {
|
|
|
|
interface RouteMeta {
|
|
|
|
requiresAuth: boolean;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const router = createRouter({
|
|
|
|
history: createWebHistory(import.meta.env.BASE_URL),
|
|
|
|
routes: [
|
|
|
|
{
|
|
|
|
path: "/",
|
|
|
|
name: "home",
|
|
|
|
component: HomeView,
|
|
|
|
meta: {
|
|
|
|
requiresAuth: true,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
path: "/oauth2/callback",
|
|
|
|
name: "oauth-callback",
|
|
|
|
component: OauthCallbackViewVue,
|
|
|
|
meta: {
|
|
|
|
requiresAuth: false,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
path: "/oauth2/redirect",
|
|
|
|
name: "oauth-redirect",
|
|
|
|
component: OauthRedirectViewVue,
|
|
|
|
meta: {
|
|
|
|
requiresAuth: false,
|
|
|
|
},
|
2022-05-22 16:25:13 +02:00
|
|
|
},
|
2022-05-21 01:07:31 +02:00
|
|
|
],
|
|
|
|
});
|
|
|
|
|
|
|
|
router.beforeEach((to, from) => {
|
|
|
|
const store = useUserStore();
|
|
|
|
if (to.meta.requiresAuth && !store.isLoggedIn) {
|
|
|
|
(<any>window).location = import.meta.env.VITE_OAUTH_REDIRECT_URL;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
export default router;
|