Clone
1
Owner view all
Arkon edited this page 2026-01-15 20:33:32 +07:00
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.

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

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

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