фикс
This commit is contained in:
parent
bed201fafd
commit
03e234b356
@ -4,16 +4,27 @@
|
|||||||
* который добавляет req.user
|
* который добавляет req.user
|
||||||
*/
|
*/
|
||||||
const adminMiddleware = (req, res, next) => {
|
const adminMiddleware = (req, res, next) => {
|
||||||
|
console.log('[DEBUG] adminMiddleware - Проверка прав администратора');
|
||||||
|
|
||||||
// Проверяем, есть ли пользователь (должен быть добавлен в middleware авторизации)
|
// Проверяем, есть ли пользователь (должен быть добавлен в middleware авторизации)
|
||||||
if (!req.user) {
|
if (!req.user) {
|
||||||
|
console.log('[DEBUG] adminMiddleware - req.user не найден, пользователь не авторизован');
|
||||||
return res.status(401).json({ message: 'Не авторизован' });
|
return res.status(401).json({ message: 'Не авторизован' });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log('[DEBUG] adminMiddleware - Пользователь:', {
|
||||||
|
id: req.user._id,
|
||||||
|
email: req.user.email,
|
||||||
|
isAdmin: req.user.isAdmin
|
||||||
|
});
|
||||||
|
|
||||||
// Проверяем, является ли пользователь администратором
|
// Проверяем, является ли пользователь администратором
|
||||||
if (!req.user.isAdmin) {
|
if (!req.user.isAdmin) {
|
||||||
|
console.log('[DEBUG] adminMiddleware - Доступ запрещен. У пользователя нет прав администратора');
|
||||||
return res.status(403).json({ message: 'Доступ запрещен. Требуются права администратора' });
|
return res.status(403).json({ message: 'Доступ запрещен. Требуются права администратора' });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log('[DEBUG] adminMiddleware - Пользователь является администратором, доступ разрешен');
|
||||||
// Если пользователь администратор, продолжаем выполнение запроса
|
// Если пользователь администратор, продолжаем выполнение запроса
|
||||||
next();
|
next();
|
||||||
};
|
};
|
||||||
|
@ -47,6 +47,14 @@ const protect = async (req, res, next) => {
|
|||||||
return next(err);
|
return next(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Добавляем отладочное логирование для проверки прав администратора
|
||||||
|
console.log('[DEBUG] protect middleware - User loaded:', {
|
||||||
|
id: req.user._id,
|
||||||
|
name: req.user.name,
|
||||||
|
email: req.user.email,
|
||||||
|
isAdmin: req.user.isAdmin
|
||||||
|
});
|
||||||
|
|
||||||
console.log('[DEBUG] protect middleware - User authenticated, calling next()');
|
console.log('[DEBUG] protect middleware - User authenticated, calling next()');
|
||||||
next();
|
next();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
@ -34,10 +34,15 @@ async function fetchUser() {
|
|||||||
throw new Error('Неверный формат ответа от сервера');
|
throw new Error('Неверный формат ответа от сервера');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Добавляем дополнительное логирование для отладки
|
||||||
|
console.log('Получены данные пользователя:', response.data);
|
||||||
|
console.log('Значение isAdmin в ответе:', response.data.isAdmin);
|
||||||
|
|
||||||
// Сохраняем данные пользователя
|
// Сохраняем данные пользователя
|
||||||
user.value = response.data;
|
user.value = response.data;
|
||||||
console.log('Пользователь успешно загружен:', user.value);
|
console.log('Пользователь успешно загружен:', user.value);
|
||||||
console.log('isAuthenticated после загрузки пользователя:', isAuthenticated.value);
|
console.log('isAuthenticated после загрузки пользователя:', isAuthenticated.value);
|
||||||
|
console.log('Пользователь является администратором:', user.value.isAdmin ? 'Да' : 'Нет');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Не удалось загрузить пользователя по токену:', error.response ? error.response.data : error.message);
|
console.error('Не удалось загрузить пользователя по токену:', error.response ? error.response.data : error.message);
|
||||||
// Если токен невалиден, очищаем его и данные пользователя
|
// Если токен невалиден, очищаем его и данные пользователя
|
||||||
|
@ -111,43 +111,53 @@ const router = createRouter({
|
|||||||
router.beforeEach(async (to, from, next) => {
|
router.beforeEach(async (to, from, next) => {
|
||||||
const { isAuthenticated, token, user, fetchUser } = useAuth(); // Получаем функции и состояния аутентификации
|
const { isAuthenticated, token, user, fetchUser } = useAuth(); // Получаем функции и состояния аутентификации
|
||||||
|
|
||||||
|
console.log('[ROUTER GUARD] Навигация: от', from.path, 'к', to.path);
|
||||||
|
console.log('[ROUTER GUARD] Текущий пользователь:', user.value);
|
||||||
|
console.log('[ROUTER GUARD] isAuthenticated:', isAuthenticated.value);
|
||||||
|
console.log('[ROUTER GUARD] Есть токен:', !!token.value);
|
||||||
|
|
||||||
// Проверяем наличие токена в localStorage
|
// Проверяем наличие токена в localStorage
|
||||||
const hasToken = !!token.value;
|
const hasToken = !!token.value;
|
||||||
|
|
||||||
// Если есть токен в localStorage и нет данных пользователя, пробуем загрузить данные
|
// Если есть токен в localStorage и нет данных пользователя, пробуем загрузить данные
|
||||||
if (hasToken && !user.value) {
|
if (hasToken && !user.value) {
|
||||||
console.log('[Router Guard] Найден токен, но нет данных пользователя. Загружаем данные...');
|
console.log('[ROUTER GUARD] Найден токен, но нет данных пользователя. Загружаем данные...');
|
||||||
try {
|
try {
|
||||||
await fetchUser();
|
await fetchUser();
|
||||||
|
console.log('[ROUTER GUARD] Данные пользователя загружены:', user.value);
|
||||||
|
console.log('[ROUTER GUARD] Пользователь является администратором:', user.value?.isAdmin ? 'Да' : 'Нет');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('[Router Guard] Ошибка при загрузке данных пользователя:', error);
|
console.error('[ROUTER GUARD] Ошибка при загрузке данных пользователя:', error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Проверка прав администратора
|
// Проверка прав администратора
|
||||||
if (to.meta.requiresAdmin && (!user.value || !user.value.isAdmin)) {
|
if (to.meta.requiresAdmin && (!user.value || !user.value.isAdmin)) {
|
||||||
console.log(`[Router Guard] Доступ к ${to.path} запрещен. Требуются права администратора.`);
|
console.log(`[ROUTER GUARD] Доступ к ${to.path} запрещен. Требуются права администратора.`);
|
||||||
|
console.log('[ROUTER GUARD] Текущий пользователь:', user.value);
|
||||||
|
console.log('[ROUTER GUARD] isAdmin:', user.value?.isAdmin);
|
||||||
return next({ name: 'Swipe' }); // Перенаправление на обычную страницу пользователей
|
return next({ name: 'Swipe' }); // Перенаправление на обычную страницу пользователей
|
||||||
}
|
}
|
||||||
|
|
||||||
// Проверяем требования маршрута к авторизации
|
// Проверяем требования маршрута к авторизации
|
||||||
if (to.meta.requiresAuth) {
|
if (to.meta.requiresAuth) {
|
||||||
if (isAuthenticated.value) {
|
if (isAuthenticated.value) {
|
||||||
console.log(`[Router Guard] Доступ к ${to.path} разрешен. Пользователь аутентифицирован.`);
|
console.log(`[ROUTER GUARD] Доступ к ${to.path} разрешен. Пользователь аутентифицирован.`);
|
||||||
next(); // Пользователь аутентифицирован, можно продолжать навигацию
|
next(); // Пользователь аутентифицирован, можно продолжать навигацию
|
||||||
} else {
|
} else {
|
||||||
// Если пользователь не аутентифицирован и страница требует авторизации
|
// Если пользователь не аутентифицирован и страница требует авторизации
|
||||||
console.log(`[Router Guard] Доступ к ${to.path} запрещен. Пользователь не аутентифицирован. Перенаправление на /login.`);
|
console.log(`[ROUTER GUARD] Доступ к ${to.path} запрещен. Пользователь не аутентифицирован. Перенаправление на /login.`);
|
||||||
next({ name: 'Login' });
|
next({ name: 'Login' });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((to.name === 'Login' || to.name === 'Register') && isAuthenticated.value) {
|
else if ((to.name === 'Login' || to.name === 'Register') && isAuthenticated.value) {
|
||||||
// Если пользователь уже аутентифицирован и пытается зайти на страницы авторизации
|
// Если пользователь уже аутентифицирован и пытается зайти на страницы авторизации
|
||||||
if (user.value && user.value.isAdmin) {
|
if (user.value && user.value.isAdmin) {
|
||||||
console.log(`[Router Guard] Админ аутентифицирован. Перенаправление с ${to.path} на админ-панель.`);
|
console.log(`[ROUTER GUARD] Админ аутентифицирован. Перенаправление с ${to.path} на админ-панель.`);
|
||||||
|
console.log('[ROUTER GUARD] isAdmin:', user.value.isAdmin);
|
||||||
next({ name: 'AdminDashboard' }); // Перенаправляем на админ-панель для админа
|
next({ name: 'AdminDashboard' }); // Перенаправляем на админ-панель для админа
|
||||||
} else {
|
} else {
|
||||||
console.log(`[Router Guard] Пользователь аутентифицирован. Перенаправление с ${to.path} на /swipe.`);
|
console.log(`[ROUTER GUARD] Пользователь аутентифицирован. Перенаправление с ${to.path} на /swipe.`);
|
||||||
next({ name: 'Swipe' }); // Перенаправляем на страницу свайпов для обычных пользователей
|
next({ name: 'Swipe' }); // Перенаправляем на страницу свайпов для обычных пользователей
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user