Панель 3.4.4, subscription-page 8.0.0. В форме «Создать токен API» кнопка Subpage отмечает subscription-page-configs:list, subscription-page-configs:get, subscriptions:subpage-config, system:metadata и users:by-username (create-api-token-modal.widget.tsx).
users:by-username subscription-page использует только в MarzbanModule, который подключается лишь при MARZBAN_LEGACY_LINK_ENABLED=true (backend/src/app.module.ts, ConditionalModule.registerWhen). Без legacy-ссылок Marzban он не нужен: sub-page с остальными четырьмя scopes стартует и отдаёт страницу и подписки, это проверено.
Почему это важно: GET /api/users/by-username/{username} отдаёт пользователя целиком, включая vlessUuid, trojanPassword, ssPassword, shortUuid/subscriptionUrl, telegramId, email. Если имена пользователей предсказуемы (например, боты создают их по шаблону с Telegram ID), утечка токена страницы подписки позволяет перебором получить креды пользователей.
Предложение: убрать users:by-username из пресета «Subpage» и добавить отдельный вариант «Subpage + Marzban legacy». Или хотя бы подписать в UI и в документации, что этот scope нужен только при MARZBAN_LEGACY_LINK_ENABLED=true.