81 lines
3.3 KiB
JavaScript
81 lines
3.3 KiB
JavaScript
import { createRouter, createWebHistory } from 'vue-router'
|
|
import HomePage from '../pages/Home.vue'
|
|
import ContentPage from '../pages/Home.vue'
|
|
import CharacterPage from '../pages/Character.vue'
|
|
import RegistePage from '../pages/Register.vue'
|
|
import loginPage from '../pages/Login.vue'
|
|
import Entertainemnt from '../pages/Entertainment.vue'
|
|
import { useAuthStore } from '@/stores/auth';
|
|
import MangasPage from '../pages/Mangas.vue'
|
|
import ChaptersPage from '@/pages/Chapters.vue'
|
|
import ChapterListPage from '@/pages/ChapterList.vue'
|
|
import SynopsisPage from '@/pages/Synopsis.vue'
|
|
import MissionPage from '@/pages/MissionPage.vue'
|
|
import FindwordsPage from '@/pages/Findwords.vue'
|
|
import MinigamePage from '@/pages/Minigame.vue'
|
|
import FlipcardPage from '@/pages/Flipcard.vue'
|
|
import WordspellsPage from '@/pages/Wordspells.vue'
|
|
import PointhistoryPage from '@/pages/Pointhistory.vue'
|
|
|
|
const routes = [
|
|
{ path: '/', name: 'home', component: HomePage , meta:{requiresAuth:true}},
|
|
{ path: '/content', name: 'content', component: ContentPage, meta:{requiresAuth:true}},
|
|
{ path: '/character', name: 'character', component: CharacterPage, meta:{requiresAuth:true}},
|
|
{ path: '/register', name: 'register', component: RegistePage,},
|
|
{ path: '/login', name:'login', component:loginPage},
|
|
{ path: '/entertainment', name:'entertainment', component:Entertainemnt},
|
|
{ path: '/entertainment/mangas', name:'mangas', component:MangasPage},
|
|
{ path: '/entertainment/manga/:id/chapters', name:'manga', component:ChaptersPage, props:true},
|
|
{ path: '/entertainment/manga/:id/chapters/synopsis', name:'manga-sinopsis', component:SynopsisPage,
|
|
props: route => ({
|
|
id: route.params.id,
|
|
synopsis: route.query.synopsis || ''
|
|
})
|
|
},
|
|
{ path: '/entertainment/manga/:manga_id/chapters/:chapter_id/', name:'manga-list', component:ChapterListPage, props:true},
|
|
{ path: '/entertainment/manga/:manga_id/chapters/:chapter_id/pages', name:'manga-read', component:ChapterListPage, props:true},
|
|
{ path:'/mission/quest/:id/missions', name: 'quest-missions', component:MissionPage},
|
|
{ path: '/profile/mission-history', name:'mission-history', component:PointhistoryPage},
|
|
|
|
// game
|
|
{ path: '/entertainment/game/find-words/', name:'game-find-words', component:FindwordsPage, props:true},
|
|
{ path: '/entertainment/mini-games/', name:'mini-games', component:MinigamePage, props:true},
|
|
{ path: '/entertainment/mini-games/flipcard/', name:'flipcard', component:FlipcardPage, props:true},
|
|
{ path: '/entertainment/mini-games/word-spells/', name:'word-spells', component:WordspellsPage, props:true},
|
|
]
|
|
|
|
const router = createRouter({
|
|
history: createWebHistory(),
|
|
routes,
|
|
})
|
|
|
|
router.beforeEach(async(to, from, next) => {
|
|
const auth = useAuthStore();
|
|
if (!auth.isLoggedIn) {
|
|
// auth.restoreSession();
|
|
try {
|
|
await auth.fetchUser();
|
|
} catch (e) {
|
|
console.log("Token tidak valid / expired.");
|
|
}
|
|
}
|
|
const isLoggedIn = auth.isLoggedIn;
|
|
|
|
// const isLoggedIn = auth.isLoggedIn;
|
|
// console.log(isLoggedIn)
|
|
// if(to.meta.requiresAuth && !isLoggedIn) {
|
|
// return next('/login');
|
|
// }
|
|
// if (to.path === '/login' && isLoggedIn) {
|
|
// return next('/')
|
|
// }
|
|
|
|
if (to.meta.requiresAuth && !isLoggedIn) {
|
|
return next("/login");
|
|
}
|
|
|
|
return next();
|
|
});
|
|
|
|
export default router
|