fix: multi-subscription UUID resolution and ownership validation

- Add _resolve_panel_uuid helper for per-subscription UUID in multi-tariff mode
- Add user ownership validation (user_id check) to all subscription queries
- Add unique partial index on (user_id, tariff_id) for active subscriptions
- Generate remnawave_short_id for new subscriptions in all creation paths
- Fix trial endpoints to check all user subscriptions, not just first
- Fix channel member handler to enable/disable per-subscription UUIDs
- Fix channel checker middleware for multi-subscription iteration
- Fix tariff switch, traffic, and device endpoints to use correct panel UUID
- Fix monitoring, auto-purchase, renewal services for multi-subscription
- Fix user_service, miniapp, subscriptions and users webapi routes
This commit is contained in:
c0mrade
2026-03-23 18:28:40 +03:00
parent 82958801b5
commit d87fb47e88
24 changed files with 406 additions and 220 deletions
+7
View File
@@ -1351,6 +1351,13 @@ class Subscription(Base):
Index('ix_subscriptions_user_id', 'user_id'),
Index('ix_subscriptions_user_status', 'user_id', 'status'),
Index('ix_subscriptions_user_tariff_status', 'user_id', 'tariff_id', 'status'),
Index(
'uq_subscriptions_user_tariff_active',
'user_id',
'tariff_id',
unique=True,
postgresql_where=text("tariff_id IS NOT NULL AND status IN ('active', 'trial')"),
),
)
id = Column(Integer, primary_key=True, index=True)