Бесплатно
Загрузите дополнение из админки вашего сайта.
Как загрузить?
Как загрузить?
Внимание, этот компонент требует версию PHP
7.4
или выше!
Если ваш сайт использует PHP ниже требуемого, установка этого
дополнения может его сломать.
Внимание, этот компонент требует версию MODX не ниже
2.8
!
Возможности
1. Активация роутинга
Для работы pbAuth необходимо включить роутинг в PageBlocks. Убедитесь, что системная настройка pageblocks_routing установлена в значение Route Only или Full API.
2. Подключение JavaScript для форм
Если вы хотите, чтобы формы авторизации и регистрации работали без перезагрузки страницы, включите настройку pageblocks_load_scripts. Это автоматически подключит необходимые скрипты, обрабатывающие отправку форм через AJAX, а также отрисовку ошибок и сообщений.
3. Вставка чанка с авторизацией
В шапку вашего сайта рекомендуется вставить один из готовых файловых чанков:
Пример подключения:
Код чанка auth.tpl:
Объяснение новых тегов:
4. Маршруты и структура
pbAuth поставляется с готовым набором маршрутов, которые регистрируются в файле core/App/routes/auth.php.
Список маршрутов:
Если вы используете чанк auth_modal, то отдельные страницы регистрации, входа и восстановления пароля можно не выводить — они будут загружаться через модальное окно.
Структура элементов аутентификации
- Аутентификация и регистрация через POST-запросы
- Сброс и смена пароля
- Профиль пользователя с возможностью редактирования данных
- Загрузка аватара
- Добавление пользователей в группы
- Валидация и отображение ошибок через Fenom
- Защита от CSRF и поддержка flash-сообщений
- Расширяемые контроллеры и шаблоны
Быстрый старт
1. Активация роутинга
Для работы pbAuth необходимо включить роутинг в PageBlocks. Убедитесь, что системная настройка pageblocks_routing установлена в значение Route Only или Full API.
2. Подключение JavaScript для форм
Если вы хотите, чтобы формы авторизации и регистрации работали без перезагрузки страницы, включите настройку pageblocks_load_scripts. Это автоматически подключит необходимые скрипты, обрабатывающие отправку форм через AJAX, а также отрисовку ошибок и сообщений.
3. Вставка чанка с авторизацией
В шапку вашего сайта рекомендуется вставить один из готовых файловых чанков:
- auth — классическая панель с кнопками входа/регистрации и отображением профиля,
- auth_modal — модальное окно (если вы хотите встроить формы без отдельных страниц).
Пример подключения:
{insert 'file:auth/chunks/auth.tpl'}
Код чанка auth.tpl:
{auth}
<a href="{route 'pageProfile'}" class="d-flex align-items-center gap-2 text-dark text-decoration-none">
<div class="avatar d-flex align-items-center justify-content-center rounded-5 bg-secondary-subtle overflow-hidden" style="width:48px;height:48px">
<img src="{$modx->user->getGravatar()}" width="48" height="48" alt="{$modx->user->username}">
</div>
<div class="d-flex flex-column">
<strong>{$modx->user->username}</strong>
<span>{$modx->user->email}</span>
</div>
</a>
{/auth}
{guest}
<ul class="navbar-nav d-flex align-items-center list-unstyled mb-0">
<li class="nav-item">
<a class="btn btn-sm" href="{route 'pageLogin'}">{lang 'auth.login_title'}</a>
</li>
<li class="nav-item">
<a class="btn btn-light btn-sm" href="{route 'pageRegister'}">{lang 'auth.register_title'}</a>
</li>
</ul>
{/guest}
Объяснение новых тегов:
- {auth} и {guest} — условные блоки, отображающие содержимое только для авторизованных или неавторизованных пользователей соответственно.
- {route 'имя_маршрута'} — получение ссылки по имени маршрута. Удобно при рефакторинге, чтобы не менять ссылки в шаблонах вручную.
- {lang 'ключ_лексикона'} — получение фраз из языковых файлов (например, {lang 'auth.register_title'} — ищет переменную register_title из файла App/lang/en/auth.php).
4. Маршруты и структура
pbAuth поставляется с готовым набором маршрутов, которые регистрируются в файле core/App/routes/auth.php.
// Только для неавторизованных пользователей
Route::middleware('guest')->group(function () {
Route::get('/login', 'Auth\LoginController@show')->name('pageLogin');
Route::post('/login', 'Auth\LoginController@login')->name('login');
Route::get('/register', 'Auth\RegisterController@show')->name('pageRegister');
Route::post('/register', 'Auth\RegisterController@register')->name('register');
Route::get('/forgot-password', 'Auth\ForgotPasswordController@show')->name('pageForgotPassword');
Route::post('/forgot-password', 'Auth\ForgotPasswordController@forgotPassword')->name('forgotPassword');
Route::get('/reset-password/{token}', 'Auth\ResetPasswordController@show')->name('pageResetPassword');
Route::post('/reset-password', 'Auth\ResetPasswordController@resetPassword')->name('resetPassword');
});
// Только для авторизованных
Route::middleware('auth')->group(function () {
Route::get('/confirm-password', 'Auth\ConfirmPasswordController@show')->name('pageConfirmPassword');
Route::post('/confirm-password', 'Auth\ConfirmPasswordController@confirmPassword')->name('confirmPassword');
Route::get('/profile', 'Auth\ProfileController@show')->name('pageProfile');
Route::post('/profile', 'Auth\ProfileController@updateProfile')->name('updateProfile');
Route::get('/profile/password', 'Auth\ChangePasswordController@show')->name('pageChangePassword');
Route::post('/profile/password', 'Auth\ChangePasswordController@changePassword')->name('changePassword');
Route::get('/logout', 'Auth\LoginController@logout')->name('logout');
});
// Подтверждение email
Route::get('/verify-email/{token}', 'Auth\AuthController@verifyEmail')->name('verifyEmail');
Список маршрутов:
- /login — форма входа
- /register — регистрация
- /forgot-password — восстановление пароля
- /reset-password/{token} — сброс пароля
- /confirm-password — подтверждение пароля
- /profile — редактирование профиля
- /profile/password — смена пароля
- /logout — выход
- /verify-email/{token} — подтверждение email
Если вы используете чанк auth_modal, то отдельные страницы регистрации, входа и восстановления пароля можно не выводить — они будут загружаться через модальное окно.
Структура элементов аутентификации
- Контроллеры — /core/App/Http/Controllers/Auth/ Основная логика регистрации, входа, восстановления пароля и т.д.
- Шаблоны — /core/App/elements/auth/ Fenom-шаблоны форм и уведомлений, которые можно кастомизировать.
- Лексиконы (переводы) — /core/App/lang/ Переводы на разные языки для сообщений, ошибок и интерфейса.
- Маршруты — /core/App/routes/auth.php Определяют доступные URL и обрабатывающие их контроллеры.
[1.0.1-pl] - 2025-06-25
Added
- Avatar upload
- Automatic user group assignment during registration
Improved
- Form validation
Changed
- Request import to Http\Request
Последние обсуждения в сообществе MODX.pro