Вход на .dev и OAuth для сторонних сайтов

«Войти» открывает обычный вход на https://zippy-chat.ru с параметром next= обратно на .dev — после входа браузер возвращается сюда, а лаборатория подхватывает сессию (общая cookie на *.zippy-chat.ru и чтение из БД). «Регистрация» — тот же механизм с /register?next=. OAuth authorization code на проде нужен для ваших приложений на других доменах, не для кнопки входа на .dev.

Когда всё же нужен OAuth

  1. Ваш сайт на другом домене — браузер не отправит cookie ZIPPY чужому origin; нужен код / токен (Authorization Code + /oauth/token).
  2. Локальная разработка без общей cookie — на localhost поддомены не совпадают; для .dev остаётся fallback через https://zippy-chat.ru/oauth/authorize.

Что хранится где

МестоДанные
Основной сайтСессия в cookie, таблицы пользователей, oauth_* для выдачи токенов
.devСвоя PHP-сессия, черновики песочницы в dev_playground, тот же MySQL что и прод
Ваш сторонний сайтСвой client_id / secret, redirect на ваш домен

FAQ

Общая cookie — это безопасно?
Да, при HTTPS и HttpOnly: cookie доступна только поддоменам вашей зоны. Для сторонних доменов по-прежнему используйте OAuth.
Это «ещё одна регистрация»?
Нет. Вы входите тем же аккаунтом на проде; на .dev создаётся только сессия лаборатории.
Где задаётся пароль БД?
Только в config/config.php — один раз для всего проекта (и прод, и .dev).
Нужен ли OAuth, чтобы просто зайти на .dev?
Нет. Вход — через обычную форму на проде и next=. OAuth на проде используете, когда встраиваете ZIPPY на сторонний сайт.

Мини-словарь

Authorization code Одноразовый код в query после согласия пользователя; меняется на access_token только сервером с secret.
redirect_uri Точный URL, куда прод вернёт браузер; должен совпадать с зарегистрированным.
state Случайная строка: вы сохраняете до редиректа и сравниваете после — защита от подмены ответа.
PKCE Расширение для публичных клиентов (мобилки/SPA); для серверного .dev достаточно secret на бэкенде.
sub Стабильный идентификатор пользователя в ответе userinfo — ключ для своих таблиц.
scope Набор разрешений; здесь минимально нужен профиль (openid-подобный поток).

Что можно строить дальше

  • Виджет «войти через ZIPPY» на любом вашем поддомене с тем же OAuth-потоком.
  • Внутренние инструменты: биллинг, модерация, аналитика — один логин с соцсети.
  • Мини-приложения и встраиваемые страницы: токен в iframe через postMessage (осторожно с origin-проверками).
  • Песочница на .dev для прототипов UI перед выкладкой в прод.