Files
DLE/frontend/src/router/index.js

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;