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