# ⛔ Роль "Забанен" ## Что добавлено ### Новая роль "Забанен" (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() ```python # Проверка на бан if user.get("role") == "banned": raise HTTPException(status_code=403, detail="Ваш аккаунт заблокирован") ``` Эта проверка выполняется **перед каждым запросом** к API, что гарантирует полную блокировку доступа. #### Обновление роли ```python new_role = data.get("role") if new_role not in ["admin", "user", "support", "banned"]: raise HTTPException(400, "Неверная роль") ``` ### Frontend #### App.jsx ```javascript const getRoleName = (role) => { switch (role) { case 'admin': return 'Админ'; case 'support': return 'Поддержка'; case 'banned': return 'Забанен'; default: return 'Пользователь'; } }; ``` #### Users.jsx ```javascript ``` #### Profile.jsx ```javascript 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. **Разблокируйте** - Войдите как админ - Измените роль обратно на "Пользователь" ## 🎯 Использование Роль "Забанен" готова к использованию. Используйте её для: - Блокировки нарушителей - Временного отстранения пользователей - Защиты панели от нежелательных действий **Будьте осторожны с блокировками! 🚨**