Проекты, серверы и доступ
Проект объединяет владельца, игровые серверы и подписку. Сервер является областью модерации, настроек и подключения расширения. Учётная запись ozProtect, SteamID сотрудника и Minecraft ID игрока имеют разное назначение.
Первый проект
- Войдите через настроенный аккаунтный сервис. Для текущей панели проверьте привязку Steam: bootstrap использует
steam_idучётной записи даже для проекта Minecraft. Minecraft UUID не заменяет аккаунт сотрудника. - Создайте проект с названием и игрой. HTTP
project.checkNameпроверяет совпадение названия;project.createсоздаёт проект, первый сервер и запускает предусмотренный исходниками trial. Наличие trial в коде не обещает его доступность конкретному аккаунту. - Укажите адрес сервера и query port, проверьте
gameпроекта/сервера. Для изменения имени, иконки и других identity-полей может понадобиться featureserver.identity. - Дождитесь нужного статуса модерации/подписки и получите адрес Network и серверные credentials через действующий кабинет.
- Установите адаптер своей игры. После подключения проверьте сервер, игроков и журнал событий в панели.
Для управления сервером владельцем используются project.createServer, project.updateServer, project.openServer и другие методы HTTP-справочника. Не передавайте ключ проекта браузеру игрока и не заменяйте им персональную авторизацию сотрудника.
Роли и права
| Уровень | Назначение |
|---|---|
| Владелец проекта | Проверяется по владельцу проекта; управляет проектом и разрешёнными владельцу настройками |
| Администратор сервера | Доступ к серверу и административным операциям в рамках настроек роли |
| Модератор | Действия, разрешённые индивидуальными правами и доступом к серверу |
| Администратор сервиса | Отдельная служебная роль для .cp и административных API; не равна администратору игрового сервера |
Панель использует access.getStaff, access.addAdmin/removeAdmin, access.addModer/removeModer, access.getModer/setModer. Backend проверяет Project.HasProjectAccess, Project.HasServerAccess, группы и права конкретного действия. Например, доступ к проверкам использует permission checks, к банам может требоваться bans.
Скрытая кнопка не является защитой API. Доступ к данным проверяется backend; выбранный сервер, роль, лицензия и dedicated scope должны совпасть. Ошибки access_denied, license_upgrade_required или dedicated_project_mismatch означают разные условия, а не необходимость повторять запрос с чужим ID.
Подключение панели
Новый браузер получает короткий personal panel token через SSO POST /auth/network-token с cookie/CSRF и выбранным проектом/сервером. account.genNetToken сохраняется для совместимого старого приложения с его ключевым протоколом. Socket.IO использует namespace /client, transport path /socket, WebSocket без polling. После проверки токена, host и доступа сервер отправляет connected с данными инициализации панели.
При смене сервера необходимо работать с его контекстом. Не отправляйте запросы сохранённым сокетом другого сервера. При ozprotect_network_host_mismatch используйте назначенный адрес из проверенного ответа/кабинета; не отключайте проверку host.
Кабинет и панель
.land обслуживает владельца и игрока, .web обслуживает повседневную модерацию, .cp обслуживает команду сервиса. Наличие похожего экрана «Биллинг» в двух интерфейсах не делает их права взаимозаменяемыми.
Источники: api/project/Project.js, api/account/Account.js, socket/client/Access.mjs, modules/ProjectStaff.js, common/ApiNet.js, маршруты .web и .cp.
