8.9 KiB
8.9 KiB
👁️ Просмотр профилей пользователей
Что добавлено
Возможность просмотра профилей для админов и тех. поддержки
Администраторы и сотрудники технической поддержки теперь могут просматривать личные кабинеты других пользователей, нажав на их логин в списке пользователей.
🎯 Как использовать
Просмотр профиля пользователя
- Войдите как администратор или тех. поддержка
- Нажмите кнопку "Пользователи" в header
- Найдите нужного пользователя в списке
- Нажмите на логин пользователя (он теперь кликабельный и подсвечивается при наведении)
- Откроется личный кабинет этого пользователя
Что можно увидеть
- ✅ Имя пользователя
- ✅ Роль пользователя
- ✅ Статистику по серверам (всего, мои, доступные)
- ✅ Список серверов пользователя
- ✅ Статистику по тикетам (всего, по статусам)
Что нельзя сделать
- ❌ Изменить имя пользователя (вкладка скрыта)
- ❌ Изменить пароль пользователя (вкладка скрыта)
- ❌ Редактировать профиль другого пользователя
🎨 Визуальные изменения
В списке пользователей (Users.jsx)
- Логин пользователя теперь кликабельный
- При наведении логин подсвечивается синим цветом
- Курсор меняется на pointer (указатель)
- Подсказка "Просмотреть профиль" при наведении
В личном кабинете (Profile.jsx)
- Заголовок: "Профиль пользователя: [username]" (вместо "Личный кабинет")
- Подзаголовок: "Просмотр профиля другого пользователя"
- Вкладки: скрыты вкладки "Имя пользователя" и "Пароль"
- Только вкладка "Обзор": показывается статистика пользователя
📋 Технические детали
Backend (main.py)
Новый endpoint
@app.get("/api/profile/stats/{username}")
async def get_user_profile_stats(username: str, user: dict = Depends(get_current_user)):
"""Получить статистику профиля другого пользователя"""
# Проверка прав доступа
if user["role"] not in ["admin", "support"]:
raise HTTPException(403, "Недостаточно прав")
# Возвращает статистику указанного пользователя
Проверка прав
- Только администраторы и тех. поддержка могут просматривать чужие профили
- Обычные пользователи получат ошибку 403
Frontend
App.jsx
const [viewingUsername, setViewingUsername] = useState(null);
const handleViewProfile = (username) => {
setViewingUsername(username);
setShowProfile(true);
setShowUsers(false);
};
Users.jsx
<button
onClick={() => onViewProfile && onViewProfile(user.username)}
className="text-lg font-semibold hover:text-blue-400 transition cursor-pointer"
title="Просмотреть профиль"
>
{user.username}
</button>
Profile.jsx
const isViewingOther = viewingUsername && viewingUsername !== user?.username;
const loadStats = async () => {
const endpoint = isViewingOther
? `${API_URL}/api/profile/stats/${viewingUsername}`
: `${API_URL}/api/profile/stats`;
// ...
};
🔐 Безопасность
Проверка прав на уровне API
- Endpoint
/api/profile/stats/{username}проверяет роль пользователя - Только
adminиsupportмогут получить доступ - Обычные пользователи получат ошибку 403
Защита на уровне UI
- Вкладки изменения имени и пароля скрыты при просмотре чужого профиля
- Невозможно редактировать данные другого пользователя
- Только просмотр статистики
📊 Доступные роли
Кто может просматривать чужие профили
- Администратор (admin) - ✅ Может просматривать все профили
- Тех. поддержка (support) - ✅ Может просматривать все профили
- Пользователь (user) - ❌ Не может просматривать чужие профили
- Забанен (banned) - ❌ Не имеет доступа к панели
✅ Примеры использования
Сценарий 1: Проверка активности пользователя
- Админ хочет проверить, сколько серверов у пользователя
- Открывает "Пользователи"
- Нажимает на логин пользователя
- Видит статистику: 3 сервера, 5 тикетов
Сценарий 2: Помощь пользователю
- Тех. поддержка получила тикет от пользователя
- Хочет посмотреть его серверы для диагностики
- Открывает "Пользователи"
- Нажимает на логин пользователя
- Видит список серверов и их названия
Сценарий 3: Модерация
- Админ хочет проверить активность пользователя перед баном
- Открывает профиль пользователя
- Видит статистику по тикетам и серверам
- Принимает решение о блокировке
🎯 Возврат к списку пользователей
Из профиля пользователя
- Нажмите кнопку "Серверы" в header
- Вы вернётесь к главной странице
- Снова откройте "Пользователи" для просмотра других профилей
Или откройте свой профиль
- Нажмите кнопку "Личный кабинет" в header
- Откроется ваш собственный профиль
- Будут доступны все вкладки (Обзор, Имя пользователя, Пароль)
⚠️ Важные замечания
Ограничения
- Нельзя редактировать чужие профили
- Нельзя изменить имя или пароль другого пользователя
- Только просмотр статистики
Рекомендации
- Используйте эту функцию для помощи пользователям
- Не злоупотребляйте просмотром чужих профилей
- Соблюдайте конфиденциальность данных пользователей
✅ Готово!
Функция просмотра профилей пользователей полностью интегрирована в MC Panel. Администраторы и тех. поддержка могут легко просматривать информацию о пользователях для помощи и модерации.
Тестирование
-
Войдите как администратор
- Логин: none
- Пароль: none
-
Создайте тестового пользователя
- Зарегистрируйте нового пользователя
- Создайте несколько серверов от его имени
-
Просмотрите его профиль
- Откройте "Пользователи"
- Нажмите на логин тестового пользователя
- Увидите его статистику
-
Вернитесь к своему профилю
- Нажмите "Личный кабинет"
- Откроется ваш профиль со всеми вкладками
Удобного использования! 👁️