👑 Владелец видит все серверы
Дата: 15 января 2026
Статус: РЕАЛИЗОВАНО ✅
🎯 Что изменилось
До изменения
Проблема: Владелец видел только серверы, к которым у него есть доступ в поле servers
{
"Root": {
"role": "owner",
"servers": [] // Пустой список = нет серверов
}
}
Результат: Владелец не видел никаких серверов, даже будучи owner
После изменения
Решение: Владелец и администратор видят ВСЕ серверы независимо от поля servers
# Новая логика в backend/main.py
can_view_all = user.get("role") in ["owner", "admin"] or \
user.get("permissions", {}).get("view_all_resources", False)
if not can_view_all and server_dir.name not in user.get("servers", []):
continue # Пропускаем сервер только для обычных пользователей
Результат: Владелец видит все серверы в системе!
📊 Логика доступа к серверам
Кто видит какие серверы
| Роль | Видит серверы | Логика |
|---|---|---|
| Owner | ✅ ВСЕ серверы | role == "owner" |
| Admin | ✅ ВСЕ серверы | role == "admin" |
| Support | ❌ Только свои | Проверка servers |
| User | ❌ Только свои | Проверка servers |
| Banned | ❌ Ничего | Нет доступа |
Примеры
Владелец (Root)
{
"username": "Root",
"role": "owner",
"servers": []
}
Видит: test, nya, 123, sdfsdf (все серверы в системе)
Администратор
{
"username": "Admin1",
"role": "admin",
"servers": []
}
Видит: test, nya, 123, sdfsdf (все серверы в системе)
Пользователь (MihailPrud)
{
"username": "MihailPrud",
"role": "user",
"servers": ["test", "nya"]
}
Видит: test, nya (только свои серверы)
Пользователь (arkonsad)
{
"username": "arkonsad",
"role": "user",
"servers": ["123", "sdfsdf"]
}
Видит: 123, sdfsdf (только свои серверы)
🎫 Логика доступа к тикетам
Кто видит какие тикеты
| Роль | Видит тикеты | Логика |
|---|---|---|
| Owner | ✅ ВСЕ тикеты | role == "owner" |
| Admin | ✅ ВСЕ тикеты | role == "admin" |
| Support | ✅ ВСЕ тикеты | role == "support" |
| User | ❌ Только свои | author == username |
| Banned | ❌ Ничего | Нет доступа |
Примечание: Логика для тикетов уже была правильной, изменений не требовалось.
🔐 Права доступа
view_all_resources
Новое право view_all_resources определяет, может ли пользователь видеть все ресурсы:
{
"permissions": {
"view_all_resources": true // Видит все серверы и тикеты
}
}
Автоматически установлено для:
- ✅ Owner -
true - ✅ Admin -
true - ❌ Support -
false - ❌ User -
false - ❌ Banned -
false
🚀 Как проверить
Шаг 1: Войдите как владелец
Логин: Root
Пароль: arkonsad123
Шаг 2: Проверьте список серверов
Вы должны увидеть ВСЕ серверы:
- test (от MihailPrud)
- nya (от MihailPrud)
- 123 (от arkonsad)
- sdfsdf (от arkonsad)
Шаг 3: Проверьте тикеты
Нажмите "Тикеты" - вы должны видеть все тикеты от всех пользователей.
💡 Дополнительные возможности
Выдать доступ к серверу пользователю
Теперь владелец может выдать доступ к любому серверу:
- Нажмите "Управление"
- Найдите пользователя
- Нажмите "Доступ к серверам" (если добавить эту кнопку)
- Выберите сервер
- Пользователь получит доступ
API:
POST /api/users/{username}/access/servers
{
"server_name": "test"
}
Забрать доступ к серверу
DELETE /api/users/{username}/access/servers/test
🔧 Технические детали
Изменённый код
Файл: backend/main.py
Эндпоинт: GET /api/servers
Было:
if user["role"] != "admin" and server_dir.name not in user.get("servers", []):
continue
Стало:
can_view_all = user.get("role") in ["owner", "admin"] or \
user.get("permissions", {}).get("view_all_resources", False)
if not can_view_all and server_dir.name not in user.get("servers", []):
continue
Изменения:
- ✅ Добавлена проверка роли
owner - ✅ Добавлена проверка права
view_all_resources - ✅ Улучшено логирование (показывает роль пользователя)
📊 Сравнение
До изменения
Root (owner) → servers: [] → Видит: 0 серверов ❌
Admin (admin) → servers: [] → Видит: 4 сервера ✅
User (user) → servers: ["test"] → Видит: 1 сервер ✅
После изменения
Root (owner) → servers: [] → Видит: 4 сервера ✅
Admin (admin) → servers: [] → Видит: 4 сервера ✅
User (user) → servers: ["test"] → Видит: 1 сервер ✅
🎯 Итог
Проблема решена! ✅
Теперь владелец (и администратор) видят все серверы в системе, независимо от поля servers в их профиле.
Что работает:
- ✅ Владелец видит все серверы
- ✅ Администратор видит все серверы
- ✅ Владелец видит все тикеты
- ✅ Администратор видит все тикеты
- ✅ Support видит все тикеты
- ✅ Пользователи видят только свои ресурсы
Перезапустите панель:
RESTART_ALL.bat
Или вручную:
cd backend
python main.py
Версия: 1.1.0
Дата: 15 января 2026
Статус: РАБОТАЕТ ✅
Полный контроль над всеми серверами! 👑🖥️