Initial commit
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
import { createRouter, createWebHistory } from 'vue-router'
|
||||
import { useAuthStore } from '../stores/authStore.js'
|
||||
|
||||
import LoginPage from '../views/LoginPage.vue'
|
||||
import RegisterPage from '../views/RegisterPage.vue'
|
||||
import LandingPage from '../views/LandingPage.vue'
|
||||
import LibraryPage from '../views/LibraryPage.vue'
|
||||
import PlaylistPage from '../views/PlaylistPage.vue'
|
||||
import ProfilePage from '../views/ProfilePage.vue'
|
||||
import AdminPage from '../views/AdminPage.vue'
|
||||
|
||||
const routes = [
|
||||
{ path: '/', name: 'Login', component: LoginPage, meta: { guest: true } },
|
||||
{ path: '/register', name: 'Register', component: RegisterPage, meta: { guest: true } },
|
||||
{ path: '/home', name: 'Home', component: LandingPage, meta: { auth: true } },
|
||||
{ path: '/library', name: 'Library', component: LibraryPage, meta: { auth: true } },
|
||||
{ path: '/playlist', name: 'Playlist', component: PlaylistPage, meta: { auth: true } },
|
||||
{ path: '/playlist/:id', name: 'PlaylistDetail', component: PlaylistPage, meta: { auth: true } },
|
||||
{ path: '/profile', name: 'Profile', component: ProfilePage, meta: { auth: true } },
|
||||
{ path: '/admin/tracks', name: 'AdminTracks', component: AdminPage, meta: { auth: true, admin: true } },
|
||||
]
|
||||
|
||||
const router = createRouter({
|
||||
history: createWebHistory(),
|
||||
routes,
|
||||
})
|
||||
|
||||
router.beforeEach((to, from, next) => {
|
||||
const authStore = useAuthStore()
|
||||
|
||||
if (to.meta.admin && !authStore.isAdmin) {
|
||||
return next('/home')
|
||||
}
|
||||
|
||||
if (to.meta.auth && !authStore.isLoggedIn) {
|
||||
return next('/')
|
||||
}
|
||||
|
||||
if (to.meta.guest && authStore.isLoggedIn) {
|
||||
return next('/home')
|
||||
}
|
||||
|
||||
next()
|
||||
})
|
||||
|
||||
export default router
|
||||
Reference in New Issue
Block a user