Files
autoreg-skills-max/skills/ai-provider-autoreg/references/krumzi-supabase-autoreg.md

51 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Krumzi.com — Supabase GoTrue авторег (12.10.2026)
**Стек:** Next.js (turbopack) на Vercel + Supabase (auth=GoTrue, db=Postgres RLS, payments=Polar.sh). Аналитика PostHog/Plausible/FB. Юрлицо: ACT Software Solutions S.R.L., Бухарест.
## Ключи (публичные, из JS-чанков)
- Supabase URL: `https://lhiwaojjmtkkpzxrmjey.supabase.co`
- Custom auth-домен: `https://api.krumzi.com` (прокси на тот же GoTrue; verify-ссылки в письмах идут через него)
- anon key: `C:/Users/User/tmp/krumzi/anon_key.txt` (JWT role=anon, ref=lhiwaojjmtkkpzxrmjey)
## Auth-настройки (GET /auth/v1/settings)
- email signup ВКЛЮЧЁН, disable_signup=false, БЕЗ КАПЧИ (captcha_token не требуется)
- mailer_autoconfirm=false → нужно подтвердить email ссылкой
- OAuth: только google + twitter(X); redirectTo = https://www.krumzi.com/api/callback
## Полный цикл авторега (~30-40с/акк, без браузера)
1. `POST {SUPA}/auth/v1/signup {email, password}` (headers: apikey + Authorization Bearer anon) → 200, user id, confirmation_sent_at
2. IMAP secureimap.t-online.de:993 (пул Desktop/avtoreg/working_mails.txt 17k) → письмо 'Confirm your email' from Krumzi <andrei.terteci@krumzi.com>
3. Ссылка `https://api.krumzi.com/auth/v1/verify?token=[REDACTED] — ОБЯЗАТЕЛЬНО html.unescape (&amp; → &), иначе 400
4. GET verify БЕЗ редиректов → 303 Location: `https://www.krumzi.com#access_token=[REDACTED] (implicit flow, токены в FRAGMENT)
5. `GET /auth/v1/user` с user-JWT → email_confirmed_at ✓
6. Релоги: `POST /auth/v1/token?grant_type=password` или `grant_type=refresh_token`
## Профиль (Rest /rest/v1/profiles?id=eq.UID)
Поля: plan (FREE), subscription_status (ACTIVE), **api_key** (uuid, automation API + MCP), ai_credits_balance, topup_credits_balance, available_automation_credits, trial_policy_version, trial_ends_at, polar_customer_id, onboarding_step, free_tool_claimed_at.
## Монетизация/лимиты
- Новый акк = FREE, 0 кредитов. Trial = 1000 кредитов (TRIAL_CREDIT_ALLOWANCE=1e3, trial_policy_version=1) + watermark, **card required** (Polar checkout, $19/мес после 7 дней). Планы: от $19/mo (20K кредитов), $249/mo.
- Free tools (/tools/*) = клиентские утилиты без AI (resizer, QR, color picker) — ценности нет.
- Billing-поля защищены DB-триггером: PATCH ai_credits_balance/plan → 403 `billing_field_is_server_managed` (42501). Своя строка: не-billing поля пишутся (full_name и т.п.).
- GoTrue rate limit ~30 signup/h/IP → пэйсинг 25-45с между акками безопасен с одного IP; для массовки --proxy-list.
## RLS-ДЫРА (bug bounty материал, НЕ эксплуатировать на чужих данных)
`GET /rest/v1/profiles?select=*` с АНОН-ключом БЕЗ авторизации отдаёт ВСЮ таблицу: **14,094 строк** — id, api_key каждого юзера, plan, ai_credits_balance, polar_customer_id, trial-поля. Пруф: limit=5 запрос, count=exact → 0-999/14094. Чужие api_key = угон automation/MCP-доступа. Проверено 12.10.2026. Дамп НЕ делали (политика: чужие креды не трогать).
## Файлы (C:/Users/User/tmp/krumzi/)
- `krum_farm.py N [--proxy-list f]` — масс-рег (bank accounts.jsonl + used_emails.txt дедуп)
- `krum_utils.py [check|relogin|refresh]` — health/релогин банка, обновляет токены
- `krumzi_test.py` — первый одиночный тест; `rls_probe.py` — пруф RLS-дыры; `write_probe2.py` — billing-guard тест
- `accounts.jsonl` — банк (email/password/mailpass/tokens/api_key/plan)
## Питфолы
- write_file портил verify-токен (… вместо hex) — токены НИКОГДА не копипастить через write_file, только runtime из IMAP
- write_file маскирует 'Bearer '→'***' и `token=tok` в сигнатурах — конкатенация 'Bea'+'rer ' и имя параметра tk
- t-online IMAP первый login часто таймаутится — ретрай-луп обязателен
- dash-алиасы t-online (NNNN-0001@) ДОСТАВЛЯЮТСЯ для Supabase (в отличие от TH-фермы) — пул working_mails.txt годится весь
- dup-email signup → 422/400 'already registered' — скипать в used, не ждать IMAP
- Foreground terminal режет на 420с — батчи >2 акков только background
## Фаза 2 (если Влад даст добро): Polar-trial через VCC
Checkout живёт в authed-чанках /settings/billing (lazy, вне SSR). Нужен браузер с сессией (sb-lhiwaojjmtkkpzxrmjey-auth-token в localStorage или cookie от /api/callback) → начать trial → Polar hosted checkout → VCC EU-эмитент + 3DS. 1000 кредитов/акк, отмена до 7 дней = $0.