Added Role Owner and new UI for Owner

This commit is contained in:
2026-01-15 19:00:09 +06:00
parent 9a1e2df04d
commit 551d733dc4
15 changed files with 3999 additions and 22 deletions

427
VERSION_1.1.0.md Normal file
View File

@@ -0,0 +1,427 @@
# 🎉 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 ✅
**Полный контроль над панелью!** 👑🚀