428 lines
11 KiB
Markdown
428 lines
11 KiB
Markdown
# 🎉 MC Panel v1.1.0 - Система прав и ролей
|
||
|
||
**Дата релиза:** 15 января 2026
|
||
**Тип релиза:** Minor Update
|
||
**Статус:** RELEASED ✅
|
||
|
||
---
|
||
|
||
## 📋 Что нового?
|
||
|
||
### 👑 Роль владельца (Owner)
|
||
|
||
Добавлена новая роль **Владелец** с полным контролем над панелью:
|
||
|
||
- ✅ Управление всеми пользователями
|
||
- ✅ Изменение ролей
|
||
- ✅ Управление правами доступа
|
||
- ✅ Удаление пользователей
|
||
- ✅ Блокировка/разблокировка
|
||
- ✅ Выдача/отзыв доступа к ресурсам
|
||
|
||
**Первый зарегистрированный пользователь автоматически становится владельцем!**
|
||
|
||
---
|
||
|
||
### 🔐 Система прав
|
||
|
||
Детальная система управления правами пользователей:
|
||
|
||
**7 типов прав:**
|
||
1. `manage_users` - Управление пользователями
|
||
2. `manage_roles` - Изменение ролей (только Owner)
|
||
3. `manage_servers` - Управление серверами
|
||
4. `manage_tickets` - Управление тикетами
|
||
5. `manage_files` - Управление файлами
|
||
6. `delete_users` - Удаление пользователей (только Owner)
|
||
7. `view_all_resources` - Просмотр всех ресурсов
|
||
|
||
---
|
||
|
||
### 👥 5 ролей пользователей
|
||
|
||
```
|
||
Owner (Владелец) - Полный контроль
|
||
↓
|
||
Admin (Администратор) - Управление панелью
|
||
↓
|
||
Support (Поддержка) - Работа с тикетами
|
||
↓
|
||
User (Пользователь) - Базовые возможности
|
||
↓
|
||
Banned (Заблокирован) - Нет доступа
|
||
```
|
||
|
||
---
|
||
|
||
### 🆕 Новые API эндпоинты
|
||
|
||
#### 1. Управление пользователями
|
||
```http
|
||
GET /api/users
|
||
```
|
||
Получить список всех пользователей (Owner/Admin)
|
||
|
||
#### 2. Изменение роли
|
||
```http
|
||
PUT /api/users/{user_id}/role
|
||
```
|
||
Изменить роль пользователя (только Owner)
|
||
|
||
#### 3. Управление правами
|
||
```http
|
||
PUT /api/users/{user_id}/permissions
|
||
```
|
||
Изменить права пользователя (только Owner)
|
||
|
||
#### 4. Доступ к серверам
|
||
```http
|
||
POST /api/users/{user_id}/access/servers
|
||
DELETE /api/users/{user_id}/access/servers/{server_name}
|
||
```
|
||
Выдать/забрать доступ к серверу (Owner/Admin)
|
||
|
||
#### 5. Блокировка
|
||
```http
|
||
POST /api/users/{user_id}/ban
|
||
POST /api/users/{user_id}/unban
|
||
```
|
||
Заблокировать/разблокировать пользователя (Owner/Admin)
|
||
|
||
#### 6. Удаление
|
||
```http
|
||
DELETE /api/users/{user_id}
|
||
```
|
||
Удалить пользователя (только Owner)
|
||
|
||
---
|
||
|
||
### 🛠️ Инструменты миграции
|
||
|
||
#### migrate_users.py
|
||
Автоматический скрипт миграции существующих пользователей:
|
||
|
||
```bash
|
||
cd backend
|
||
python migrate_users.py
|
||
```
|
||
|
||
**Что делает:**
|
||
- ✅ Создаёт backup users.json
|
||
- ✅ Назначает первого пользователя владельцем
|
||
- ✅ Добавляет права всем пользователям
|
||
- ✅ Добавляет систему доступа к ресурсам
|
||
- ✅ Показывает результат миграции
|
||
|
||
#### MIGRATE_USERS.bat
|
||
Bat файл для Windows:
|
||
|
||
```bash
|
||
MIGRATE_USERS.bat
|
||
```
|
||
|
||
---
|
||
|
||
### 📚 Новая документация
|
||
|
||
#### OWNER_PERMISSIONS.md (~500 строк)
|
||
Полная документация системы прав:
|
||
|
||
- Обзор системы
|
||
- Роли и возможности
|
||
- API эндпоинты
|
||
- Примеры использования (Python, JavaScript, cURL)
|
||
- Миграция пользователей
|
||
- FAQ
|
||
|
||
#### CHANGELOG.md
|
||
История всех изменений проекта:
|
||
|
||
- Версия 1.1.0 - Система прав
|
||
- Версия 1.0.0 - Первый релиз
|
||
|
||
---
|
||
|
||
## 🔄 Изменения
|
||
|
||
### Backend
|
||
|
||
**Структура пользователя:**
|
||
```json
|
||
{
|
||
"username": "example",
|
||
"role": "user",
|
||
"permissions": {
|
||
"manage_users": false,
|
||
"manage_roles": false,
|
||
"manage_servers": true,
|
||
"manage_tickets": true,
|
||
"manage_files": true,
|
||
"delete_users": false,
|
||
"view_all_resources": false
|
||
},
|
||
"resource_access": {
|
||
"servers": ["server1"],
|
||
"tickets": ["ticket1"],
|
||
"files": ["server1/*"]
|
||
}
|
||
}
|
||
```
|
||
|
||
**Проверка прав:**
|
||
```python
|
||
def require_owner(current_user: dict):
|
||
if current_user["role"] != "owner":
|
||
raise HTTPException(status_code=403)
|
||
|
||
def require_admin_or_owner(current_user: dict):
|
||
if current_user["role"] not in ["owner", "admin"]:
|
||
raise HTTPException(status_code=403)
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 Сравнение версий
|
||
|
||
| Функция | v1.0.0 | v1.1.0 |
|
||
|---------|--------|--------|
|
||
| Роли | 2 (admin, user) | 5 (owner, admin, support, user, banned) |
|
||
| Система прав | ❌ | ✅ 7 типов прав |
|
||
| Управление пользователями | Базовое | Расширенное |
|
||
| Блокировка пользователей | ❌ | ✅ |
|
||
| Удаление пользователей | ❌ | ✅ (только Owner) |
|
||
| Доступ к ресурсам | Все или ничего | Детальный контроль |
|
||
| API эндпоинтов | 37 | 45 (+8) |
|
||
|
||
---
|
||
|
||
## 🚀 Обновление с v1.0.0
|
||
|
||
### Шаг 1: Backup
|
||
|
||
```bash
|
||
# Создайте backup
|
||
BACKUP_DATA.bat
|
||
```
|
||
|
||
### Шаг 2: Обновление кода
|
||
|
||
```bash
|
||
# Остановите панель
|
||
STOP_DOCKER.bat
|
||
|
||
# Обновите код
|
||
git pull origin main
|
||
|
||
# Или скачайте новую версию
|
||
```
|
||
|
||
### Шаг 3: Миграция пользователей
|
||
|
||
```bash
|
||
# Запустите миграцию
|
||
MIGRATE_USERS.bat
|
||
|
||
# Или вручную
|
||
cd backend
|
||
python migrate_users.py
|
||
```
|
||
|
||
### Шаг 4: Перезапуск
|
||
|
||
```bash
|
||
# Запустите панель
|
||
START_DOCKER.bat
|
||
|
||
# Или
|
||
docker-compose up -d --build
|
||
```
|
||
|
||
### Шаг 5: Проверка
|
||
|
||
1. Войдите как владелец
|
||
2. Проверьте права пользователей
|
||
3. Настройте доступ к ресурсам
|
||
|
||
---
|
||
|
||
## 💡 Примеры использования
|
||
|
||
### Python
|
||
|
||
```python
|
||
import requests
|
||
|
||
token = "owner_token"
|
||
headers = {"Authorization": f"Bearer {token}"}
|
||
base_url = "http://localhost:8000"
|
||
|
||
# Получить пользователей
|
||
users = requests.get(f"{base_url}/api/users", headers=headers).json()
|
||
|
||
# Изменить роль
|
||
requests.put(
|
||
f"{base_url}/api/users/2/role",
|
||
headers=headers,
|
||
json={"role": "admin"}
|
||
)
|
||
|
||
# Выдать доступ к серверу
|
||
requests.post(
|
||
f"{base_url}/api/users/2/access/servers",
|
||
headers=headers,
|
||
json={"server_name": "Survival"}
|
||
)
|
||
|
||
# Заблокировать пользователя
|
||
requests.post(
|
||
f"{base_url}/api/users/2/ban",
|
||
headers=headers,
|
||
json={"reason": "Нарушение правил"}
|
||
)
|
||
```
|
||
|
||
### JavaScript
|
||
|
||
```javascript
|
||
const token = "owner_token";
|
||
const baseUrl = "http://localhost:8000";
|
||
|
||
// Получить пользователей
|
||
const users = await fetch(`${baseUrl}/api/users`, {
|
||
headers: { "Authorization": `Bearer ${token}` }
|
||
}).then(r => r.json());
|
||
|
||
// Изменить роль
|
||
await fetch(`${baseUrl}/api/users/2/role`, {
|
||
method: "PUT",
|
||
headers: {
|
||
"Authorization": `Bearer ${token}`,
|
||
"Content-Type": "application/json"
|
||
},
|
||
body: JSON.stringify({ role: "admin" })
|
||
});
|
||
```
|
||
|
||
---
|
||
|
||
## 🔒 Безопасность
|
||
|
||
### Новые меры безопасности
|
||
|
||
- ✅ Проверка прав на всех административных эндпоинтах
|
||
- ✅ Логирование действий владельца
|
||
- ✅ Защита от удаления владельца
|
||
- ✅ Автоматическое понижение роли при передаче прав
|
||
- ✅ Детальный контроль доступа к ресурсам
|
||
|
||
### Рекомендации
|
||
|
||
1. Регулярно проверяйте права пользователей
|
||
2. Используйте роль Support для службы поддержки
|
||
3. Блокируйте неактивных пользователей
|
||
4. Логируйте все административные действия
|
||
5. Создавайте backup перед изменением прав
|
||
|
||
---
|
||
|
||
## 📝 Миграция данных
|
||
|
||
### Автоматическая миграция
|
||
|
||
При запуске `migrate_users.py`:
|
||
|
||
1. ✅ Создаётся backup с timestamp
|
||
2. ✅ Первый пользователь → Owner
|
||
3. ✅ Admin остаются Admin
|
||
4. ✅ Остальные → User
|
||
5. ✅ Всем добавляются права
|
||
6. ✅ Добавляется система доступа к ресурсам
|
||
|
||
### Ручная миграция
|
||
|
||
Если нужно вручную:
|
||
|
||
```json
|
||
{
|
||
"username": "Root",
|
||
"password": "hashed_password",
|
||
"role": "owner",
|
||
"permissions": {
|
||
"manage_users": true,
|
||
"manage_roles": true,
|
||
"manage_servers": true,
|
||
"manage_tickets": true,
|
||
"manage_files": true,
|
||
"delete_users": true,
|
||
"view_all_resources": true
|
||
},
|
||
"resource_access": {
|
||
"servers": [],
|
||
"tickets": [],
|
||
"files": []
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 🐛 Известные проблемы
|
||
|
||
### Нет критических проблем
|
||
|
||
Все функции протестированы и работают корректно.
|
||
|
||
### Ограничения
|
||
|
||
- Может быть только один владелец
|
||
- Владельца нельзя удалить
|
||
- Передача прав владельца понижает текущего владельца до admin
|
||
|
||
---
|
||
|
||
## 📞 Поддержка
|
||
|
||
### Документация
|
||
|
||
- [OWNER_PERMISSIONS.md](OWNER_PERMISSIONS.md) - Система прав
|
||
- [CHANGELOG.md](CHANGELOG.md) - История изменений
|
||
- [API.md](API.md) - API документация
|
||
- [FAQ.md](FAQ.md) - Часто задаваемые вопросы
|
||
|
||
### Проблемы с миграцией?
|
||
|
||
1. Проверьте backup файл
|
||
2. Читайте вывод скрипта миграции
|
||
3. Проверьте формат users.json
|
||
4. Восстановите из backup если нужно
|
||
|
||
---
|
||
|
||
## 🎯 Что дальше?
|
||
|
||
### Планы на v1.2.0
|
||
|
||
- [ ] UI компонент управления пользователями
|
||
- [ ] Логи действий администраторов
|
||
- [ ] Экспорт/импорт пользователей
|
||
- [ ] Групповое управление правами
|
||
- [ ] История изменений прав
|
||
- [ ] Email уведомления о изменении прав
|
||
|
||
---
|
||
|
||
## 🙏 Благодарности
|
||
|
||
Спасибо за использование MC Panel!
|
||
|
||
Эта версия добавляет мощную систему управления пользователями, которая даёт полный контроль над панелью.
|
||
|
||
---
|
||
|
||
**Версия:** 1.1.0
|
||
**Дата:** 15 января 2026
|
||
**Статус:** RELEASED ✅
|
||
|
||
**Полный контроль над панелью!** 👑🚀
|
||
|