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