Files
NeveTimePanel/VIEW_USER_PROFILES.md

8.9 KiB
Raw Blame History

👁️ Просмотр профилей пользователей

Что добавлено

Возможность просмотра профилей для админов и тех. поддержки

Администраторы и сотрудники технической поддержки теперь могут просматривать личные кабинеты других пользователей, нажав на их логин в списке пользователей.

🎯 Как использовать

Просмотр профиля пользователя

  1. Войдите как администратор или тех. поддержка
  2. Нажмите кнопку "Пользователи" в header
  3. Найдите нужного пользователя в списке
  4. Нажмите на логин пользователя (он теперь кликабельный и подсвечивается при наведении)
  5. Откроется личный кабинет этого пользователя

Что можно увидеть

  • Имя пользователя
  • Роль пользователя
  • Статистику по серверам (всего, мои, доступные)
  • Список серверов пользователя
  • Статистику по тикетам (всего, по статусам)

Что нельзя сделать

  • Изменить имя пользователя (вкладка скрыта)
  • Изменить пароль пользователя (вкладка скрыта)
  • Редактировать профиль другого пользователя

🎨 Визуальные изменения

В списке пользователей (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

  • Вкладки изменения имени и пароля скрыты при просмотре чужого профиля
  • Невозможно редактировать данные другого пользователя
  • Только просмотр статистики

📊 Доступные роли

Кто может просматривать чужие профили

  1. Администратор (admin) - Может просматривать все профили
  2. Тех. поддержка (support) - Может просматривать все профили
  3. Пользователь (user) - Не может просматривать чужие профили
  4. Забанен (banned) - Не имеет доступа к панели

Примеры использования

Сценарий 1: Проверка активности пользователя

  1. Админ хочет проверить, сколько серверов у пользователя
  2. Открывает "Пользователи"
  3. Нажимает на логин пользователя
  4. Видит статистику: 3 сервера, 5 тикетов

Сценарий 2: Помощь пользователю

  1. Тех. поддержка получила тикет от пользователя
  2. Хочет посмотреть его серверы для диагностики
  3. Открывает "Пользователи"
  4. Нажимает на логин пользователя
  5. Видит список серверов и их названия

Сценарий 3: Модерация

  1. Админ хочет проверить активность пользователя перед баном
  2. Открывает профиль пользователя
  3. Видит статистику по тикетам и серверам
  4. Принимает решение о блокировке

🎯 Возврат к списку пользователей

Из профиля пользователя

  1. Нажмите кнопку "Серверы" в header
  2. Вы вернётесь к главной странице
  3. Снова откройте "Пользователи" для просмотра других профилей

Или откройте свой профиль

  1. Нажмите кнопку "Личный кабинет" в header
  2. Откроется ваш собственный профиль
  3. Будут доступны все вкладки (Обзор, Имя пользователя, Пароль)

⚠️ Важные замечания

Ограничения

  • Нельзя редактировать чужие профили
  • Нельзя изменить имя или пароль другого пользователя
  • Только просмотр статистики

Рекомендации

  • Используйте эту функцию для помощи пользователям
  • Не злоупотребляйте просмотром чужих профилей
  • Соблюдайте конфиденциальность данных пользователей

Готово!

Функция просмотра профилей пользователей полностью интегрирована в MC Panel. Администраторы и тех. поддержка могут легко просматривать информацию о пользователях для помощи и модерации.

Тестирование

  1. Войдите как администратор

    • Логин: none
    • Пароль: none
  2. Создайте тестового пользователя

    • Зарегистрируйте нового пользователя
    • Создайте несколько серверов от его имени
  3. Просмотрите его профиль

    • Откройте "Пользователи"
    • Нажмите на логин тестового пользователя
    • Увидите его статистику
  4. Вернитесь к своему профилю

    • Нажмите "Личный кабинет"
    • Откроется ваш профиль со всеми вкладками

Удобного использования! 👁️