Skip to content
  1. Компоненты
  2. Cabinet

Cabinet

Cabinet - Комплексное решение для быстрого внедрения личного кабинета пользователя в MODX Revolution. Идеально подходит как для опытных разработчиков, так и для новичков.

✨ Основные возможности

  • Автоматическая настройка прав доступа
  • Автоматическое создание страниц и разделов
  • Поддержка модального режима работы
  • Интеграция с социальными сетями для регистрации/авторизации
  • Верификация телефона через SMS/Voice OTP
  • Интеграция с дополнениями:
  • Расширенные возможности для интернет-магазина:
    • Автоматическая авторизация при первом заказе
    • История и управление заказами
    • Повторный заказ товаров
    • Шаринг заказов
  • Гибкое управление профилем пользователя
  • Защита от CSRF-атак
  • Интеграция с reCAPTCHA 3
  • Bootstrap 5
  • Нативный JavaScript

🎬 Демонстрационное видео

Демонстрационное видео

RuTube

🚀 Быстрый старт

Установка

При установке дополнения в окне "Опции установки" доступны следующие настройки:

  • Группа пользователей для доступа к приватным страницам (создается автоматически при отсутствии)
  • Режим регистрации:
    • E-mail - с подтверждением через электронную почту
    • Телефон - с подтверждением через SMS или звонок
  • Режим работы:
    • Модальное окно с AJAX запросами
    • Стандартные страницы
  • Настройка создаваемых страниц:
    • Название
    • Псевдоним (alias)
    • Родительский ресурс
    • Тип доступа (приватная/публичная)
    • Статус показа в меню
    • Шаблон
    • Содержимое

Настройка установки

Основные опции

Регистрация и авторизация

Для вывода ссылок регистрации/авторизации и меню кабинета используйте сниппет:

modx
[[!cabinetLogin]]

При использовании модального режима добавьте в футер каждой страницы:

modx
[[!cabinetAuth]]

Форма регистрации

В зависимости от выбранного режима регистрации в чанке cabinet.auth у формы регистрации можно оставить минимальный набор полей:

  • Для режима E-mail: только поле электронной почты
  • Для режима Телефон: только поле телефона

По умолчанию требуется подтверждение данных при регистрации. Для отключения этой функции установите системную настройку Активация пользователя (ключ cabinet_auth_activation) в значение Нет. При отключенной активации форма регистрации должна обязательно содержать поле пароля.

⚙️ Системные настройки

Авторизация

Опции авторизации

SMS/Voice OTP

Настройка провайдера

В системных настройках в разделе "OTP":

  1. Укажите класс провайдера в опции Класс провайдера SMS и Voice OTP (cabinet_phone_handler_class)
  2. По умолчанию установлен CabinetPhoneLog - тестовый провайдер, записывающий информацию в лог MODX
  3. Настройте параметры выбранного провайдера в соответствующей опции конфигурации

Настройка режима работы

  • Выберите режим OTP в опции Режим OTP для телефона (cabinet_otp_phone_mode):
    • sms - подтверждение через SMS
    • call - подтверждение через звонок

Настройки безопасности

  • Установите лимит повторных запросов кода в опции Лимит повторных запросов кода (cabinet_otp_phone_sending_limit)
  • Настройте время блокировки в опции Время блокировки повторных запросов кода (cabinet_otp_phone_sending_lock_time)
    • Значение указывается в минутах
    • По умолчанию: 360 минут (6 часов)

Поддерживаемые провайдеры

ПровайдерСтранаSMSVoiceОпция конфигурации
CabinetGreenSmsRUcabinet_greensms_config
CabinetTeraSmsRUcabinet_terasms_config
CabinetAlphaSmsUAcabinet_alphasms_config
CabinetSmsClubMobiUAcabinet_smsclubmobi_config
CabinetPhoneLogDemo-

Возможно бесплатное добавление новых провайдеров при наличии PHP API библиотеки.

Опции OTP

Социальные сети

Основные настройки

В системных настройках пакета, в разделе "Соцсети", доступны следующие опции:

  1. Использовать социальные сети (ключ cabinet_social_providers): Укажите через запятую названия социальных сетей, которые будут доступны клиенту для регистрации и авторизации.

  2. Авторизация пользователей через социальные сети (ключ cabinet_social_login): Позволяет разрешить или запретить пользователям авторизоваться через социальные сети.

  3. Регистрировать новых пользователей через социальные сети (ключ cabinet_social_signup):

  • Разрешает или запрещает регистрацию новых пользователей через социальные сети.
  • Если регистрация отключена, но опция "Авторизация пользователей через социальные сети" включена, пользователи смогут добавлять социальные сети для авторизации в настройках своего профиля.
  1. Включить социальные сети (ключ cabinet_enable_socials): Позволяет глобально включать или отключать использование социальных сетей.

Поддерживаемые социальные сети

СетьОпция конфигурации
Googlecabinet_social_Google
Yandexcabinet_social_Yandex
Mailrucabinet_social_Mailru
Vkontaktecabinet_social_Vkontakte
Odnoklassnikicabinet_social_Odnoklassniki
Facebookcabinet_social_Facebook
Instagramcabinet_social_Instagram
Twittercabinet_social_Twitter
LinkedIncabinet_social_LinkedIn
GitHubcabinet_social_GitHub

Инструкции по получению API ключей для большинства провайдеров можно посмотреть тут.

Опции социальных сетей

Безопасность

Опции безопасности

reCAPTCHA 3

Интеграция с Google reCAPTCHA 3 для защиты от автоматизированных атак.

Опции reCAPTCHA 3

🧩 Сниппеты

cabinetLogin

Сниппет для вывода ссылок регистрации/авторизации или меню авторизованного пользователя.

Параметры

ПараметрПо умолчаниюОписание
cabinetPageId0ID страницы кабинета. При 0 значении используется значение из системной опции cabinet_home_page_id
loginPageId0ID страницы после авторизации. При 0 значении используется значение из системной опции cabinet_login_page_id
logoutPageId0ID страницы после выхода. При 0 значении используется значение из системной опции cabinet_logout_page_id
tplcabinet.loginЧанк оформления
tplWrapper-Чанк-обертка
gravatarUrlhttps://gravatar.com/avatar/URL сервиса Gravatar
css-Путь к CSS файлу
js-Путь к JavaScript файлу

cabinetAuth

Сниппет для вывода форм авторизации, регистрации и восстановления пароля.

Параметры

НазваниеЗначение по умолчаниюОписание
groups-Список групп для регистрации пользователя, через запятую. При пустом значении используется значение из системной опции cabinet_auth_user_group
addContexts-Дополнительные контексты, через запятую. Например, &addContexts=web,ru,en
widgetloginАктивный widget формы. Допустимые значения: login; register; recovery
loginPageId0ID страницы, на который отправлять юзера после авторизации. При 0 значении используется значение из системной опции cabinet_login_page_id
logoutPageId0ID страницы, на который отправлять юзера после завершения сессии. При 0 значении используется значение из системной опции cabinet_logout_page_id
tplcabinet.loginИмя чанка для оформления результата работы сниппета
tplWrappercabinet.auth.wrapperИмя чанка-обертки на результатом работы сниппета
tplMessageWrappercabinet.message.wrapperИмя чанка-обертки для сообщений формы
css{assets_url}components/cabinet/css/web/auth.cssСсылка на подключаемый css файл стилей
js{assets_url}components/cabinet/js/web/auth.jsСсылка на подключаемый js скрипт

cabinetProfile

Сниппет для вывода формы профиля пользователя.

Параметры

НазваниеЗначение по умолчаниюОписание
allowedFieldsusername:50, email:50, fullname:50, phone:12, mobilephone:12, dob:10, gender, address, country, city, state, zip, fax, comment, specifiedpassword, confirmpasswordСписок разрешенных для редактирования полей юзера, через запятую. Также можно указать максимальну. длину значений, через двоеточие.
avatarJSON строка с параметрами конвертации аватара при помощи phpThumb
avatarPathimages/avatar/Директория для сохранения аватаров пользователей внутри MODX_ASSETS_PATH
gravatarUrlhttps://gravatar.com/avatar/Gravatar Url
requiredFieldsusername,emailСписок обязательных полей при редактировании. Эти поля должны быть заполнены для успешного обновления профиля.
tplcabinet.profileИмя чанка для оформления результата работы сниппета
tplWrappercabinet.profile.wrapperИмя чанка-обертки на результатом работы сниппета
tplMessageWrappercabinet.message.wrapperИмя чанка-обертки для сообщений формы
css{assets_url}components/cabinet/css/web/profile.cssСсылка на подключаемый css файл стилей
js{assets_url}components/cabinet/js/web/profile.jsСсылка на подключаемый js скрипт

cabinetOrders

Сниппет для вывода списка заказов пользователя.

Вывода списка заказов

Параметры

НазваниеЗначение по умолчаниюОписание
statusAlias-JSON строка с альтернативным ID статуса заказа. Пример: {6:1,8:11} где 6 текущий статус заказа, а 1 статус который увидит клиент
allowCancelStatuses1Список ID статусов заказа, через запятую, для которых разрешена отмена заказа клиентом
cancelledStatus4ID статуса для заказа отмененного клиентом
excludeStatuses5Список ID статусов заказа, которые следует исключить из вывода в фильтре
criteriaAvailability{"published":1,"deleted":0}. Пример расширения значения по умолчанию:JSON строка с дополнительными критериями проверки товара на его доступность для заказа
sharePageId0ID страницы для вывода расшаренного заказа. При 0 значении используется значение из системной опции cabinet_shared_order_page_id
detailsPageId0ID страницы для вывода детальной информации о заказе. При 0 значении используется значение из системной опции cabinet_order_details_page_id
thumbsСписок размеров превьюшек для выборки, через запятую. Например: "120x90,360x240" дадут плейсхолдеры +120x90 и +360x240. Картинки должны быть заранее сгенерированы в галерее товара
currencySymbolsymbol_rightКолонка с символом валюты в модуле msMultiCurrency. Допустимые значения: symbol_left; symbol_right
limit12Лимит выборки результатов
offset0Пропуск результатов с начала выборки
sortbycreatedonПоле для сортировки выборки
sortdirDESCНаправление сортировки
whereДополнительные параметры выборки, закодированные в JSON
returntplСпособ вывода результатов. Допустимые значения: tpl и data
tplcabinet.ordersИмя чанка для оформления результата работы сниппета
tplWrapper-Имя чанка-обертки на результатом работы сниппета
tplMessageWrappercabinet.message.wrapperИмя чанка-обертки для сообщений формы
css-Ссылка на подключаемый css файл стилей
js{assets_url}components/cabinet/js/web/orders.jsСсылка на подключаемый js скрипт

cabinetOrderDetails

Сниппет для вывода детальной информации о заказе.

Вывод деталей заказа

Параметры

НазваниеЗначение по умолчаниюОписание
tplcabinet.order.detailsИмя чанка для оформления результата работы сниппета

Данный сниппет является оберткой над cabinetOrders и включает в себя все его параметры.

cabinetOrdersStats

Сниппет для вывода общей статистки по заказам.

Параметры

НазваниеЗначение по умолчаниюОписание
activeStatuses1Список ID статусов активных заказов, через запятую
cancelledStatuses4Список ID статусов отмененных заказов, через запятую
completedStatuses2,3Список ID статусов завершенных заказов, через запятую
currencySymbolsymbol_rightКолонка с символом валюты в модуле msMultiCurrency. Допустимые значения: symbol_left; symbol_right
returntplСпособ вывода результатов. Допустимые значения: tpl и data
tplcabinet.orders.statsИмя чанка для оформления результата работы сниппета
tplWrapper-Имя чанка-обертки на результатом работы сниппета
css-Ссылка на подключаемый css файл стилей
js-Ссылка на подключаемый js скрипт

cabinetSharedOrder

Сниппет для вывода расшаренного заказа.

Параметры

НазваниеЗначение по умолчаниюОписание
thumbsСписок размеров превьюшек для выборки, через запятую. Например: "120x90,360x240" дадут плейсхолдеры +120x90 и +360x240. Картинки должны быть заранее сгенерированы в галерее товара
currencySymbolsymbol_rightКолонка с символом валюты в модуле msMultiCurrency. Допустимые значения: symbol_left; symbol_right
tplcabinet.shared.orderИмя чанка для оформления результата работы сниппета
tplWrapper-Имя чанка-обертки на результатом работы сниппета
tplMessageWrappercabinet.message.wrapperИмя чанка-обертки для сообщений формы
css-Ссылка на подключаемый css файл стилей
js-Ссылка на подключаемый js скрипт

📫 Системные события

cabinetBeforeMakeUrl

Событие перед созданием URL.

Параметры

ПараметрОписание
idID ресурса
urlИтоговый URL (если не пусто, событие cabinetMakeUrl не сработает)
contextКонтекст для ограничения создания URL
argsСтрока запроса
schemeФормат создания URL
optionsМассив параметров
toolsЭкземпляр CabinetTools

cabinetMakeUrl

Событие создания URL

Параметры

НазваниеОписание
idID ресурса,к которому создается URL-адрес
urlКонечное значение URL-адреса
contextЗадает контекст для ограничения создания URL-адреса
argsСтрока запроса, добавляемая к сгенерированному URL-адресу
schemeСхема показывает, в каком формате создается URL-адрес
optionsМассив параметров для создания URL-адреса ресурса
toolsСсылка на инстанс класса CabinetTools

cabinetIsAvailableProduct

Событие получения статуса доступности товара для заказа

Параметры

НазваниеОписание
idID товара
dataДанные товара в виде массива
availableСтатус доступности. Допустимые значения 0 и 1
toolsСсылка на инстанс класса CabinetTools

cabinetBeforePrepareOrderProduct

Событие подготовки данных товара из заказа

Параметры

НазваниеОписание
order_idID заказа
product_idID товара
dataДанные товара в виде массива
orderСсылка на инстанс класса msOrder
toolsСсылка на инстанс класса CabinetTools

💻 Разработка

Лексиконы

Все сообщения и уведомления находятся в лексиконах:

  • Тема auth: сообщения авторизации
  • Тема profile: сообщения профиля

Лексиконы auth

Лексиконы profile

Консольные скрипты

core/components/cabinet/scripts/generate_orders_share_key.php
Скрипт для генерации ключей шаринга заказов, созданных до установки Cabinet.