pbAuth

pbAuth — система аутентификации, регистрации и профилей пользователей для PageBlocks
Бесплатно
Загрузите дополнение из админки вашего сайта.
Как загрузить?
Автор дополнения
Boshnik
Пакетов
9
Закачек
7 813
Автор дополнения
Пакетов
9
Закачек
7 813
Версия 1.0.3-pl
Дата выпуска 11.10.2025
Загрузки 10
Просмотры 1 320
Возможности
  • Аутентификация и регистрация через 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.3-pl] - 2025-10-11

Added

  • Google reCAPTCHA v3 support
  • registration form validation by IP address — no more than 3 registrations per IP

Improved

  • username field validation during registration

Requirements

  • Requires PageBlocks component version 2.8.3 or higher

[1.0.2-pl] - 2025-07-05

Added

  • Support for PageBlocks v2.7.3

Fixed

  • File structure organization

[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

[1.0.0-pl] - 2025-06-16

  • First release

Последние обсуждения в сообществе MODX.pro