Что такое pbAuth
pbAuth — вход, регистрация, восстановление пароля и профиль пользователя для сайтов на PageBlocks 3.x. Поверх учётных записей MODX: своей таблицы пользователей компонент не заводит и не подменяет modUser.
Это не самостоятельное приложение. Без PageBlocks компонент пишет ошибку в лог и выключается: оттуда приходят роутинг, контроллеры, файловые шаблоны, валидация, почта, миграции и шаблонизатор.
Без роутинга адресов не будет
pageblocks_routing должна стоять в Route Only или Full API. На значении по умолчанию /login и /register отвечают «страница не найдена», и выглядит это так, будто пакет не установился.
Что он делает и чего не делает
Компонент держит сценарии входа. Регистрация с подтверждением почты и повторной отправкой ссылки, вход по логину, почте или телефону, восстановление и смена пароля, подтверждение пароля перед опасным действием, профиль с аватаром, второй фактор, вход через шесть соцсетей, вход менеджера под пользователем, режим «один вход на учётную запись».
Вёрстку держит сайт. Двадцать чанков форм и два шаблона-обёртки кладутся в core/App/elements/auth/ при установке и с этого момента принадлежат сайту. Компонент их больше не касается — ни при обновлении, ни при удалении, если файл изменён.
Разделение жёсткое и ровно по той причине, по которой оно вообще нужно: формы входа на двух сайтах не похожи ничем, кроме имён полей, и никакая параметризация этого не покрывает.
Один результат — два пути
// Вёрстка — чанк в шапке шаблона, ссылки на готовые страницы
{include 'file:auth/chunks/auth.tpl'}
// Вёрстка — правка самой формы, обычная вёрстка в обычном файле
core/App/elements/auth/chunks/form.login.tpl
// Разработчик — поведение меняется настройкой, кодом или своим контроллером
core/App/config/pbauth.phpНи один путь не проходит через другой: верстальщик правит .tpl и не открывает PHP, разработчик меняет поведение и не трогает разметку.
Сниппетов у pbAuth нет, и это не упущение в документации
У соседних компонентов трек вёрстки — сниппет: [[!pbProducts]], подменил чанк, готово. Здесь иначе: страницы /login, /register, /profile поднимает роутер PageBlocks, им не нужен ни ресурс, ни вызов в шаблоне. Нулевой шаг от этого получается даже короче, чем у сниппета — заводить нечего, адрес уже отвечает.
Цена — другая: чтобы поменять поведение, правится файл настроек на PHP, а не параметр вызова. Если в вашей команде вёрстка к файлам сайта доступа не имеет, смотрите на это заранее: &tpl= в pbAuth подставить некуда.
Почему роуты и контроллеры лежат в компоненте
До версии 1.1.0 установщик раскладывал роуты и контроллеры в core/App/, и сайт правил их на месте. Это работало до первого обновления: исправление в контроллере компонента до сайта не доезжало, потому что исполнялась его копия.
Теперь всё наоборот. Код живёт в компоненте и обновляется, а то, что сайт раньше менял правкой контроллера, стало настройкой: шаблоны, правила проверки, редиректы, группы пользователей, подмена самого контроллера — всё через core/App/config/pbauth.php.
Файл App/routes/auth.php выключает компонент целиком
Пока в core/App/routes/ лежит файл с именно этим именем, pbAuth считает, что сайт остался на старой схеме, и не подаёт ни одного своего адреса — иначе те же URI зарегистрировались бы дважды.
Обновление удаляет этот файл, если он байт в байт совпадает с поставочным. Правленый — остаётся, и удалить его нужно руками, перенеся правки в App/config/pbauth.php. Свои роуты кладите файлом с любым другим именем.
Что приносит своя таблица
Ровно одна возможность во всём компоненте требует своей таблицы — привязка аккаунтов соцсетей (pba_social_accounts). Связь «аккаунт у провайдера → пользователь» ищется при каждом входе, а искать её внутри JSON в профиле значит перебирать всех пользователей.
Всё остальное живёт в полях MODX: секрет второго фактора и резервные коды — в extended профиля под ключом pbauth, одноразовые ключи подтверждения и сброса — в штатном remote_key.
Куда идти дальше
- Быстрый старт — установить, показать кнопки и формы, поправить разметку. Без PHP.
- Свои поля в формах — добавить телефон, убрать лишнее, разобраться с правилами проверки.
- Файл настроек — что можно изменить, не написав ни строчки логики.
- События и свой код — слушатели, свои контроллеры, свои роуты, JSON для SPA.
- Соцсети, 2FA, вход под пользователем — три больших подсистемы и их устройство.
- Справочник — роуты и их имена, настройки в админке, раскладка файлов, решение проблем.