фикс
This commit is contained in:
parent
62763c567d
commit
66e20ddf22
@ -66,22 +66,40 @@ const router = createRouter({
|
||||
});
|
||||
|
||||
// Добавляем навигационный guard для проверки аутентификации
|
||||
router.beforeEach((to, from, next) => {
|
||||
const { isAuthenticated } = useAuth(); // Получаем текущий статус аутентификации
|
||||
router.beforeEach(async (to, from, next) => {
|
||||
const { isAuthenticated, token, user, fetchUser } = useAuth(); // Получаем функции и состояния аутентификации
|
||||
|
||||
// Проверяем наличие токена в localStorage
|
||||
const hasToken = !!token.value;
|
||||
|
||||
// Если есть токен в localStorage и нет данных пользователя, пробуем загрузить данные
|
||||
if (hasToken && !user.value) {
|
||||
console.log('[Router Guard] Найден токен, но нет данных пользователя. Загружаем данные...');
|
||||
try {
|
||||
await fetchUser();
|
||||
} catch (error) {
|
||||
console.error('[Router Guard] Ошибка при загрузке данных пользователя:', error);
|
||||
}
|
||||
}
|
||||
|
||||
// Проверяем, требует ли маршрут аутентификации и не аутентифицирован ли пользователь
|
||||
if (to.meta.requiresAuth && !isAuthenticated.value) {
|
||||
// Если да, перенаправляем на страницу входа
|
||||
console.log(`[Router Guard] Доступ к ${to.path} запрещен. Пользователь не аутентифицирован. Перенаправление на /login.`);
|
||||
next({ name: 'Login' }); // Или next('/login');
|
||||
} else if ((to.name === 'Login' || to.name === 'Register') && isAuthenticated.value) {
|
||||
// (Опционально) Если пользователь уже аутентифицирован и пытается зайти на /login или /register,
|
||||
// перенаправляем его на главную или на /swipe
|
||||
console.log(`[Router Guard] Пользователь аутентифицирован. Перенаправление с ${to.path} на /.`);
|
||||
next({ name: 'Home' }); // или next('/');
|
||||
// Проверяем требования маршрута к авторизации
|
||||
if (to.meta.requiresAuth) {
|
||||
if (isAuthenticated.value) {
|
||||
console.log(`[Router Guard] Доступ к ${to.path} разрешен. Пользователь аутентифицирован.`);
|
||||
next(); // Пользователь аутентифицирован, можно продолжать навигацию
|
||||
} else {
|
||||
// Если пользователь не аутентифицирован и страница требует авторизации
|
||||
console.log(`[Router Guard] Доступ к ${to.path} запрещен. Пользователь не аутентифицирован. Перенаправление на /login.`);
|
||||
next({ name: 'Login' });
|
||||
}
|
||||
}
|
||||
else if ((to.name === 'Login' || to.name === 'Register') && isAuthenticated.value) {
|
||||
// Если пользователь уже аутентифицирован и пытается зайти на страницы авторизации
|
||||
console.log(`[Router Guard] Пользователь аутентифицирован. Перенаправление с ${to.path} на /swipe.`);
|
||||
next({ name: 'Swipe' }); // Перенаправляем на страницу свайпов вместо главной для лучшего UX
|
||||
}
|
||||
else {
|
||||
// В противном случае разрешаем навигацию
|
||||
// Другие страницы, не требующие авторизации
|
||||
next();
|
||||
}
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user