Files
NeveTimePanel/BANNED_ROLE.md
2026-01-14 22:13:07 +06:00

7.1 KiB
Raw Blame History

Роль "Забанен"

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

Новая роль "Забанен" (banned)

Роль для блокировки пользователей, которые нарушили правила или должны быть временно/постоянно отстранены от использования панели.

🚫 Ограничения роли

Полная блокировка доступа

Пользователи с ролью "Забанен" не имеют доступа ни к каким функциям панели:

  • Создание серверов
  • Управление серверами
  • Просмотр консоли
  • Менеджер файлов
  • Создание тикетов
  • Просмотр тикетов
  • Личный кабинет
  • Любые другие функции

Что происходит при попытке входа

При попытке доступа к любому endpoint API пользователь получает ошибку:

403 Forbidden: "Ваш аккаунт заблокирован"

🎨 Визуальное отображение

В списке пользователей (Users.jsx)

  • 🔴 Красная иконка пользователя
  • Текст роли: "Забанен"
  • Описание: " Пользователь заблокирован и не имеет доступа к панели"

В личном кабинете (Profile.jsx)

  • 🔴 Красный бейдж с текстом "Забанен"
  • Описание: " Аккаунт заблокирован, доступ запрещён"

В header (App.jsx)

  • Бейдж: "Забанен" (красный цвет)

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

Заблокировать пользователя

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

Разблокировать пользователя

  1. Войдите как администратор
  2. Нажмите кнопку "Пользователи"
  3. Найдите заблокированного пользователя
  4. В выпадающем списке выберите другую роль:
    • "Пользователь" - обычный доступ
    • "Тех. поддержка" - доступ к тикетам
    • "Администратор" - полный доступ

📋 Технические детали

Backend (main.py)

Проверка в get_current_user()

# Проверка на бан
if user.get("role") == "banned":
    raise HTTPException(status_code=403, detail="Ваш аккаунт заблокирован")

Эта проверка выполняется перед каждым запросом к API, что гарантирует полную блокировку доступа.

Обновление роли

new_role = data.get("role")
if new_role not in ["admin", "user", "support", "banned"]:
    raise HTTPException(400, "Неверная роль")

Frontend

App.jsx

const getRoleName = (role) => {
  switch (role) {
    case 'admin':
      return 'Админ';
    case 'support':
      return 'Поддержка';
    case 'banned':
      return 'Забанен';
    default:
      return 'Пользователь';
  }
};

Users.jsx

<option value="banned">Забанен</option>

Profile.jsx

case 'banned':
  return 'bg-red-500/20 text-red-500 border-red-500/50';

🔐 Безопасность

Защита на уровне API

  • Проверка роли выполняется в функции get_current_user()
  • Блокировка происходит до выполнения любого endpoint
  • Невозможно обойти блокировку через API

Защита на уровне UI

  • Визуальное отображение статуса блокировки
  • Красные индикаторы для предупреждения
  • Понятные сообщения об ошибках

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

Администраторы не могут быть заблокированы

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

Логирование блокировок

Рекомендуется добавить логирование:

  • Кто заблокировал пользователя
  • Когда была выполнена блокировка
  • Причина блокировки (опционально)

Уведомления

Можно добавить:

  • Email уведомление о блокировке
  • Причину блокировки в профиле
  • Дату окончания блокировки (для временных банов)

📊 Статистика

Роли в системе

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

Готово!

Роль "Забанен" полностью интегрирована в MC Panel. Администраторы могут блокировать пользователей, которые нарушают правила или должны быть отстранены от использования панели.

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

  1. Создайте тестового пользователя

    • Зарегистрируйте нового пользователя
  2. Заблокируйте его

    • Войдите как админ
    • Откройте "Пользователи"
    • Измените роль на "Забанен"
  3. Попробуйте войти

    • Выйдите из админа
    • Войдите как заблокированный пользователь
    • Вы увидите ошибку "Ваш аккаунт заблокирован"
  4. Разблокируйте

    • Войдите как админ
    • Измените роль обратно на "Пользователь"

🎯 Использование

Роль "Забанен" готова к использованию. Используйте её для:

  • Блокировки нарушителей
  • Временного отстранения пользователей
  • Защиты панели от нежелательных действий

Будьте осторожны с блокировками! 🚨