Можно ли сделать вход пользователей и личный кабинет
Да. Подключите коннектор Supabase, опишите в промпте, кто логинится и что видит после входа, и Zugo соберёт регистрацию, вход и личный кабинет. Аккаунты живут в Supabase Auth под вашим аккаунтом. Одна вещь остаётся на вас всегда: проверить, что каждый пользователь видит только свои строки.
Вопрос почти никогда не про кнопку «Войти». Он про то, что происходит после неё: у кого какой доступ, где хранится пароль и кому принадлежат аккаунты, если вы завтра смените инструмент. Разберём по порядку.
Что вообще входит в «вход пользователей»?
Четыре разные вещи, которые в разговоре сливаются в одну. Регистрация: человек заводит аккаунт. Аутентификация: система убеждается, что это он. Сессия: он остаётся залогиненным между визитами. Авторизация: система решает, что именно ему показать.
Первые три генерация закрывает уверенно, потому что это стандартный набор, одинаковый почти в любом продукте. Четвёртая зависит от вашей предметной области, и именно на ней ломаются сборки: система прекрасно отличает залогиненного от анонимного и при этом показывает залогиненному чужие заказы.
Отсюда практический вывод. В промпте про вход важнее описать не форму, а правило видимости. «Пользователи регистрируются по email» это половина задачи. «Пользователи регистрируются по email и видят только свои заказы, а администратор видит все» это задача целиком.
Где хранятся аккаунты и пароли?
В Supabase Auth, то есть в проекте Supabase, который заведён на ваш аккаунт. Zugo не держит отдельную базу пользователей вашего приложения: сгенерированный код обращается к вашему проекту, а таблица пользователей и хеши паролей остаются там же, где вы можете их увидеть в дашборде.
Это важно по двум причинам, и обе практические. Первая: вы в любой момент видите список зарегистрированных людей, можете сбросить доступ или удалить аккаунт, не спрашивая никого. Вторая: если вы перестанете пользоваться Zugo, база пользователей никуда не денется, потому что она изначально не была внутри Zugo.
| Что вы делаете | Где это происходит | Кому принадлежит |
|---|---|---|
| Описываете роли и вход | Промпт в Zugo | Ваш проект |
| Генерируется форма входа | Код проекта | Ваш проект, экспортируется в GitHub |
| Регистрируется пользователь | Supabase Auth | Ваш аккаунт Supabase |
| Хранится пароль | Supabase Auth | Ваш аккаунт Supabase |
| Лежат данные пользователя | Postgres в Supabase | Ваш аккаунт Supabase |
| Настраиваются правила доступа | Дашборд Supabase | Вы, руками |
| Уходят письма о регистрации | Коннектор Resend | Ваш аккаунт Resend |
Нижняя строка таблицы это то, о чём обычно вспоминают поздно. Подтверждение почты, сброс пароля и уведомления это письма, а письмам нужен отправитель. Коннектор Resend закрывает эту часть, но текст писем стоит перечитать: сгенерированная формулировка это черновик.
Как описать роли в промпте?
Перечислить их списком и для каждой назвать, что она видит и что может менять. Это самая недооценённая часть запроса. Генерация не угадает, что у вас «мастер» и «администратор» это разные уровни доступа, если вы об этом не сказали.
Слабо: «сайт с личным кабинетом». Сильно: «Сервис записи к репетитору. Ученик регистрируется по email, видит только свои занятия и может отменить занятие за сутки. Репетитор видит расписание всех своих учеников. Администратор видит всё и может завести репетитора».
В этой формулировке есть три роли, правило видимости для каждой и одно бизнес-ограничение. Последнее почти наверняка потребует отдельной правки: специфичное условие вроде «за сутки» доводится уточнениями, а не появляется идеально с первого раза.
Ещё одна привычка: сразу скажите, нужна ли открытая регистрация. Приложения для своих и приложения для публики устроены по-разному, и «регистрация только по приглашению администратора» это отдельное требование, которое нужно назвать словами.
Что чаще всего идёт не так?
Четыре сценария, и все они повторяются от проекта к проекту, поэтому проще проверить их сразу, чем обнаружить через месяц.
Фильтр вместо ограничения. Список показывает только ваши записи, но приходят с сервера все. На экране всё выглядит правильно, а данные утекают. Ловится не глазами, а вторым аккаунтом.
Единственная роль. Вы описали двух пользователей, а получили одного: любой залогинившийся может всё. Обычно это значит, что в промпте не было глагола «может» применительно к каждой роли по отдельности.
Регистрация без выхода. Форма входа есть, кнопки выхода нет, и вы это замечаете только тогда, когда нужно проверить второй аккаунт. Просите выход явным пунктом.
Молчаливая ошибка. Неверный пароль ничего не показывает, письмо для сброса не приходит. Тексты ошибок и письма это часть входа, а не украшение, и о них надо сказать в описании.
Каждое из четырёх лечится одной правкой за 3 кредита. Дороже обходится не исправление, а то, что проблему нашли поздно, когда в приложении уже сидели живые пользователи.
Что проверить сразу после сборки?
Три вещи, в этом порядке, потому что каждая ломается по-своему.
Сначала базовый цикл: зарегистрируйтесь, выйдите, войдите заново, сбросьте пароль. Это самая частая и самая заметная поломка, и она видна за две минуты.
Потом изоляцию данных. Заведите двух пользователей и убедитесь, что второй не видит записи первого. Проверять надо именно так, живыми аккаунтами, а не глядя на интерфейс: список может фильтроваться на экране и при этом отдаваться целиком.
Потом права в самой базе. Откройте дашборд Supabase и посмотрите политики доступа к таблицам. Любое приложение с пользовательскими данными, собранное генерацией или руками, заслуживает такой ревизии до того, как в нём появятся настоящие люди. Как подключается сам коннектор, описано в статье AI-приложение с Supabase.
Проверка перед выдачей здесь помогает мало, и это стоит понимать честно. Каждая сборка запускается в песочнице, и та, что не открылась, помечается как неудачная вместо того, чтобы уехать к вам как результат. Риск белого экрана это снижает, но не убирает, и про правильность прав доступа не говорит ничего.
Сколько стоит приложение с входом?
Ровно столько же, сколько приложение того же размера без входа: авторизация не тарифицируется отдельно. Сборка стоит 6 кредитов, правка 3, многостраничная платформа 12 за первые три страницы и по 3 кредита за каждую следующую. Hi-Fi удваивает: сборка 12, правка 6.
Тарифы: Free даёт 5 кредитов единоразово, Pro стоит $25 в месяц и даёт 200 кредитов, Business стоит $99 в месяц. Оговорка про Free честная: 5 кредитов чуть меньше одной сборки, поэтому первый прогон начинается на платном плане.
Реалистичная смета выглядит так. Одна сборка на основу, дальше три-пять правок на роли и видимость, ещё две-три на письма и тексты ошибок. То есть проект с нормально работающим входом обычно укладывается в двадцать-тридцать кредитов, а 200 кредитов Pro дают 66 правок, если тратить их только на доводку. Аккаунт Supabase оплачивается отдельно и имеет свой бесплатный уровень.
Где границы у сгенерированной авторизации?
Четыре, и все они про ответственность, а не про технику.
- Права доступа надо пересматривать самому. Генерация делает разумное предположение о том, кто что видит. Предположение и требование это разные вещи, а цена ошибки здесь чужие персональные данные.
- Сложные схемы доступа доводятся правками. Роли с пересечениями, доступ по организациям, временные приглашения: всё это появляется через серию уточнений поверх работающей основы.
- Zugo не заменяет команду на сложном продукте. Если в системе десяток ролей и внешние интеграции, первая версия соберётся быстро, а дальше её ведёт команда.
- Совместная работа над проектом устроена иначе, чем вы ждёте. Аккаунт держит один человек, остальные смотрят опубликованную ссылку. Подробности в статье можно ли работать вдвоём над проектом.
Ни один из пунктов не отменяет пользы. Они означают, что рабочий вход появляется за минуты, а доверять ему настоящие данные стоит после того, как вы сами проверили, кто что видит.
С чего начать?
С одного экрана и двух ролей. Опишите приложение так, чтобы в тексте были глаголы «видит» и «может», подключите Supabase и заведите двух тестовых пользователей сразу после первой сборки.
Если приложение будет ещё и хранить содержательные данные, полезен разбор приложения с базой данных. А сама проверка занимает один вечер: опишите свой сценарий на zugo.dev, зарегистрируйтесь в собственном приложении и посмотрите на список пользователей в дашборде Supabase.