DaydreamMods

DaydreamMods

Подписки и права

Как тариф открывает сборки и что хранится у каждой подписки.

Подписка — строка в subscriptions: пользователь, тариф, статус, начало, конец, момент отмены.

Права — строки в plan_entitlements: пара тариф + сборка. Dreamer связан с тремя проектами. Тариф Warpgate — только с проектом Warpgate. Believer не связан ни с одним проектом, поэтому кабинет не показывает сборки и скачивание запрещено.

Список миров в коде не зашит. Опубликованный проект без entitlement никому не скачивается, но на витрине /projects виден.

Статусы

  • pending — счёт создан, ResultURL ещё не пришёл.
  • active — оплата подтверждена, endsAt в будущем. Скачивание разрешено только для сборок этого тарифа.
  • canceled — пользователь нажал отмену в кабинете. Доступ к файлам прекращается сразу, не «до конца оплаченного периода» отдельным флагом: статус уже не active.
  • expired — срок вышел. Отдельная джоба может выставлять этот статус; проверка скачивания всё равно требует active.
  • payment_error — платёж не прошёл. Файлы не выдаются.

Автопродления нет. В кабинете строка «Следующая оплата» прямо говорит, что автопродление не подключено. Новый срок — новое оформление.

Открытие продаж

Ключ site_settings.sales_open_at, строка ISO. Пока серверное время меньше этой даты, /subscription рисует таймер и не показывает тарифы. Checkout на сервере тоже отказывается: «Продажи ещё не открыты».

У тарифа может быть своё поле plans.sales_open_at. Если оно в будущем, этот тариф отдельно закрыт, даже когда общая витрина уже открыта.

Что видит человек

На витрине порядок фиксирован логикой, не сеткой «шесть равных карточек»: Dreamer, вопрос про одну сборку, три одиночных тарифа, вопрос про поддержку, Believer и Sponsor. Кнопка Dreamer — «Погрузиться в мечту».

В кабинете «Мои сборки» — это не каталог студии, а миры текущей активной подписки.