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

177 lines
7.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ⛔ Роль "Забанен"
## Что добавлено
### Новая роль "Забанен" (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
<option value="banned">Забанен</option>
```
#### 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. **Разблокируйте**
- Войдите как админ
- Измените роль обратно на "Пользователь"
## 🎯 Использование
Роль "Забанен" готова к использованию. Используйте её для:
- Блокировки нарушителей
- Временного отстранения пользователей
- Защиты панели от нежелательных действий
**Будьте осторожны с блокировками! 🚨**