# Пресет «Subpage» при создании API-токена даёт лишний scope users:by-username

**URL:** https://f.docs.rw/t/topic/763
**Category:** Баг-репорты
**Created:** 2026-09-19T12:31:17Z
**Posts:** 1

## Post 1 by @Guesswow — 2026-09-19T12:31:17Z

Панель 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`.
