47 lines
1.2 KiB
JavaScript
47 lines
1.2 KiB
JavaScript
import { createRouter, createWebHistory } from 'vue-router';
|
|
import HomeView from '../views/HomeView.vue';
|
|
import { useAuthStore } from '../stores/auth';
|
|
|
|
console.log('router/index.js: Script loaded');
|
|
|
|
const routes = [
|
|
{
|
|
path: '/',
|
|
name: 'home',
|
|
component: HomeView
|
|
}
|
|
];
|
|
|
|
const router = createRouter({
|
|
history: createWebHistory(),
|
|
routes
|
|
});
|
|
|
|
console.log('router/index.js: Router created');
|
|
|
|
// Защита маршрутов
|
|
router.beforeEach(async (to, from, next) => {
|
|
const authStore = useAuthStore();
|
|
|
|
// Если пытаемся перейти на несуществующий маршрут, перенаправляем на главную
|
|
if (!to.matched.length) {
|
|
return next({ name: 'home' });
|
|
}
|
|
|
|
// Проверяем аутентификацию, если маршрут требует авторизации
|
|
if (to.matched.some(record => record.meta.requiresAuth)) {
|
|
if (!authStore.isAuthenticated) {
|
|
return next({ name: 'home' });
|
|
}
|
|
|
|
// Проверяем права администратора
|
|
if (to.matched.some(record => record.meta.requiresAdmin) && !authStore.isAdmin) {
|
|
return next({ name: 'home' });
|
|
}
|
|
}
|
|
|
|
next();
|
|
});
|
|
|
|
export default router;
|