Files
NeveTimePanel/OWNER_VIEW_ALL.md

7.1 KiB
Raw Blame History

👑 Владелец видит все серверы

Дата: 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: Проверьте тикеты

Нажмите "Тикеты" - вы должны видеть все тикеты от всех пользователей.


💡 Дополнительные возможности

Выдать доступ к серверу пользователю

Теперь владелец может выдать доступ к любому серверу:

  1. Нажмите "Управление"
  2. Найдите пользователя
  3. Нажмите "Доступ к серверам" (если добавить эту кнопку)
  4. Выберите сервер
  5. Пользователь получит доступ

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

Изменения:

  1. Добавлена проверка роли owner
  2. Добавлена проверка права view_all_resources
  3. Улучшено логирование (показывает роль пользователя)

📊 Сравнение

До изменения

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
Статус: РАБОТАЕТ

Полный контроль над всеми серверами! 👑🖥️