Версия 1.4.6-pl
Дата выпуска 05.05.2017
Загрузки 2 684
Просмотры 1 579
Внимание, этот компонент требует версию PHP 5.3 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
Личный кабинет пользователя MODX.
  • Быстрая регистрация, с активацией учётной записи через email или телефон.
  • Авторизация с возможностью сброса пароля на email или телефон.
  • Редактирование профиля, с возможностью смены email и телефона с высылкой подтверждающего кода.
  • Вывод заказов miniShop2.
Все действия по регистрации, авторизации и редактированию профиля работают через ajax.

Компонент обладает модульной структурой, позволяя программировать новые разделы с любой функциональностью. Например, личный кабинет в этом магазине (modstore.pro) сделан с помощью Office.

Все проверки работы Office нужно проводить из анонимного режима браузера, чтобы не мешалась авторизация в админке!

Авторизация


Личный кабинет будет доступен только для авторизованных пользователей. Их мы будем регистрировать в группу Users.

Нужно её создать:
Права доступа на контекст назначаем Load, List and View.

Теперь создаём раздел «Личный кабинет» и в нём 2 страницы: «Профиль» и «История заказов». Сам личный кабинет должен быть ссылкой на «Историю заказов» — для удобства:
Я пока скрыл вывод кабинета в меню, как закончим — нужно будет включить!

Теперь нас нужно закрыть эти страницы для доступа всем, кроме группы Users. Обратите внимание, что мы должны дать группе (аноним) доступ Load only, чтобы они могли загрузить страницу, проверить права доступа и получить «403 Доступ запрещен». Если не дать им Load only, то страница для них не будет существовать, и анонимы получат «404 не найдено».

Создаём новую группу ресурсов Office, назначаем ей права и включаем в неё все наши 3 страницы личного кабинета.
После этого нужно снова зайти в «Контроль доступа» и ужесточить доступ групп Users и (аноним) к этой группе ресурсов, потому что MODX выставляет не совсем верные права по умолчанию. Для Users он ставит Resource, а дла (аноним) Load, List and View.
Всё, теперь можно открыть страницу кабинета из анонимного режима браузера (мы не должны быть залогинены в админке, это даёт нам дополнительные права) и получить вывод главной страницы по этому адресу.

Чтобы вместо главной нам показывалась страница авторизации, нужно её создать и указать её id в системной настройке unauthorized_page.
И теперь в анонимном режиме мы получаем требование авторизации при переходе в личный кабинет:

Обратите внимание, что я вызываю сниппет officeAuth с параметром groups — это указывает, что пользователя нужно зарегистрировать в группу Users, которая как раз и имеет доступ к личному кабинету.
[[!officeAuth?
	&groups=`Users`
]]

Всё просто и логично, если немного разобраться. Настроить авторизацию через HybridAuth вы можете с помощью документации. Если она не нужна, то можно её просто отключить:
[[!officeAuth?
	&groups=`Users`
	&HybridAuth=`0`
]]
Лично я предпочитаю настраивать — это удобно для посетителя.

Все параметры сниппета авторизации можно посмотреть на его странице:

По умолчанию, при регистрации пользователя нельзя использовать HybridAuth. Юзер должен первый раз авторизоваться через email, а затем уже привязать нужные соцсети в настройках профиля.

Кстати говоря, если покупатель уже оформлял заказ на этот email — система его не примет, и он может сбросить пароль, получить его на почту, войти в личный кабинет и увидеть все свои заказы.

То есть, установкой данного дополнения вы откроете всем своим покупателям доступ к их истории заказов.

Редактирование профиля


Основных отличий officeProfile от других решения для редактирования профиля несколько:
  • Он целиком и полностью работает через ajax.
  • Он позволяет указать поля профиля, которые можно заполнять.
  • Он может требовать определённые поля для заполнения
  • Юзер может менять свой username и email. Причем для смены последнего высылается ссылка для активации на новый ящик. Пока юзер не кликнет — email не изменится.
  • Можно выводить и редактировать поле extended профиля. Такие поля разрешаются в настройках и выводятся в форме как extended[имя поля].
  • Юзер может загрузить\u0443далить картинку для своего профиля, по прежнему через ajax. Если картинки нет — выводится gravatar.
  • Здесь юзер может привязать свои соцсети (если включено и настроено), чтобы быстро через них авторизоваться.
Это всё работает сразу, из коробки, безо всякого шаманства.

Сам сниппет вызывается очень просто:
[[!officeProfile]]
Вы можете указать ему дополнительные параметры: отключать ли HybridAuth, куда пересылать юзера при выходе с сайта (по умолчанию — текущий url), параметры загрузки аватара и т.д.
Не буду на этом останавливаться, вы сами можете всё прекрасно посмотреть в его параметрах, в админке.

Вывод заказов


А вот личный кабинет вызывается немного необычно.
[[!Office?action=`miniShop2`]]
Тут нужно небольшое лирическое отступление. У Office модульная архитектура, вы можете создать свой контроллер, положить ему в директорию и вызвать вот таким образом через сниппет Office.

Всё, что есть внутри Office работает именно так, но для авторизации и профиля позже были добавлены сниппеты, только для того, чтобы прописать в них параметры для вызова. А внутри же они выглядят вот так:
<?php
/** @var array $scriptProperties */
$scriptProperties['action'] = 'Auth';

/** @var modSnippet $snippet */
if ($snippet = $modx->getObject('modSnippet', array('name' => 'Office'))) {
	$snippet->_cacheable = false;
	$snippet->_processed = false;

	return $snippet->process($scriptProperties);
}
То есть, просто выставляют action и запускают тот же сниппет Office вместе со своими параметрами.

В случае же с выводом заказов miniShop2 нет никаких параметров для сниппета — он управляется системными настройками. А, стало быть, отдельный сниппет ему и не нужен.

Конечно, чисто для симметрии, этот сниппет был создан, но я предпочитаю лишний раз напоминать покупателям дополнения, что оно умеет гораздо больше, чем видно по сниппетам, идущим в комплекте.

Итак, история заказов:
Всё построено на ExtJS — это очень удобно. Сам он загружается из установленного MODX, поэтому на разных версиях MODX он может выглядеть немного по разному. Для версии 2.3 уже выпущено обновление Office с исправлением стилей.

Поля для вывода указываются в системных настройках. Также вы можете полностью изменить внешний вид ExtJS собственным css файлом, но это довольно кропотливая работа — предупреждаю сразу.
Большинству магазинов подойдут настройки по умолчанию, разве что может понадобиться убрать поле «вес».

1.4.6-pl

  • [miniShop2] Ability to repeat and delete orders.

1.4.5-pl

  • [Profile] Remove default avatar params from update processor due to issues.
  • [Auth] Emails with "+" are now supported.

1.4.4-pl

  • [Auth] Fixed saving of the mobilephone when office_auth_mode != phone.

1.4.3-pl

  • [Auth] Fixed the error when user with phone in email could not to authenticate.
  • [Auth] Fixed the error "Could not load controller auth".

1.4.2-pl

  • [Auth] Improved integration with HybridAuth.
  • [Profile] Fixed the regular expression for verification of emails.

1.4.1-pl

  • [Auth] Improved work of ByteHand sms provider.
  • Fixed handling of errors when sending sms.

1.4.0-pl

  • PSR-2.
  • Removed autoload of jQuery.
  • Mobile phones support with SMS authentication.
  • The multilingual chunks by default.
  • The HybridAuth is no longer installed by default.
  • A login errors now logged on "info" level instead of "error".

1.3.11-pl

  • No longer authorization required to activate a new email.

1.3.10-pl

  • Some security fixes.

1.3.9-pl

  • Updated jGrowl to version 1.4.5.

1.3.8-pl

  • [RemoteAuth] Fixed possible E_WARNING in PHP 7.

1.3.7-pl

  • Improved load of phpThumb for profile avatars.

1.3.6-pl

  • Improved load of pdoTools.

1.3.5-pl

  • [OfficeProfile] Fixed processing restrictions of length for field "comments".

1.3.4-pl

  • [OfficeProfile] Fixed remove of profile photo on double form save.

1.3.3-pl

  • [OfficeAuth] Improved process of login links.

1.3.2-pl

  • [OfficeProfile] Ability to specify nested extended fields in &profileFields parameter.
  • [OfficeProfile] Ability to specify nested extended fields in &requiredFields parameter.
  • Updated FontAwesome to versions 4.5.0.

1.3.1-pl

  • [Profile] Improved handling of field "dob".
  • Some ExtJS widgets improvements.

1.3.0-pl

  • New system setting "office_controllers_paths".
  • New snippet "officeMiniShop2" as a shorthand for MS2 private office.
  • New Ext JS CSS styles.
  • Reformat code.
  • [miniShop2] Added search text field. Some UI improvements.

1.2.5-pl

  • [RemoteAuth] Fixed parameter "rememberme".

1.2.4-pl

  • [Auth] Fixed error with activation of emails with "+".

1.2.3-pl

  • [Profile] Improved handling of passwords fields.
  • [Profile] Improved handling of "comment" field.

1.2.2-pl

  • Added system setting "office_sanitize_pcre".

1.2.1-pl

  • [Profile] Improved parsing of "profileFields" parameter.

1.2.0-pl

  • Controllers will use pdoTools functions if available.

1.1.10-pl

  • [#19] [Profile] Fixed issue with HybridAuth templates.

1.1.9-pl1

  • Updated HybridAuth version in the installer.

1.1.8-pl1

  • [Profile] Fixed removing old photos from "avatarPath".
  • [Auth] Fixed some log entries.

1.1.7-pl

  • Added call of system event on user activation.
  • [Remote] Changed log level to "error".

1.1.6-pl

  • Fixed retrieving of modMail ErrorInfo.
  • Improved creating of system settings.
  • [#10] [miniShop2] Fixed order log pagination.

1.1.5-pl1

  • [Profile] Improved handling of extended fields.

1.1.4-pl3

  • [Main] Fixed work of frontend scripts whe Minify is not working.
  • [Profile] Removed option "profile_force_email_as_username" by default.
  • [#9] [Profile] Do not overwrite existing extended fields.
  • [#6] [Profile] Ability not to use email in profile form.
  • Ability to set empty &requiredFields=``.
  • Fixed ExtJS windows animation in MODX 2.3.

1.1.3-pl

  • [#4] Fixed loading of HybridAuth with custom chunks.

1.1.2-pl

  • [miniShop2] Improved support of MODX 2.3.

1.1.1-pl1

  • Switched gravatar links to https by default.
  • [miniShop2] Added support of lexicons in payment, delivery and status names.

1.1.0-pl1

  • [miniShop2] Fixed empty product names in order grid on MS2 < 2.1.8.
  • [Auth] Added "username" and "fullname" fields to registration form.
  • [Auth] Ability to use username or email for login.
  • [Auth] User will receive activation email if he trying to login and his account was not activated.
  • [#3] [Auth] Ability to use $_GET['hauth_return'] for redirecting user to any page after authorization.
  • [#2] [Profile] Fixed clearing of user photo.
  • [#1] [Profile] Improved regular expression for supporting of all unicode characters.

1.1.0-beta

  • [Main] Updated Ext JS modx-theme.
  • [Main] Added Font Awesome 4.1 for modx-theme.
  • [miniShop2] Updated miniShop2 controller and Ext JS grid for version 2.1.8.
  • [miniShop2] Improved format of weight and price in MS2 grid.
  • [miniShop2] Fixed default system setting "office_ms2_order_product_fields".
  • [Auth] Ability to use password for login.
  • [Auth] New login form.
  • [Profile] Ability to change password.
  • [Remote] Fixed parameter "updateUser" in remote auth controller.

1.0.0-pl

  • [Auth] Ability to use regular user names, not email.
  • [Profile] Added system setting to force using emails as usernames.
  • [Profile] Ability to change username.
  • [Profile] Ability to upload user avatar.
  • Updated chunks for Bootstrap 3.
  • Ability to overwrite chunks on update.
  • [Remote] New controller for remote authentication.
  • Improved login errros handling.
  • Fixed &profileFields in "officeProfile".

0.9.5-pl2

  • [Profile] Ability to edit extended fields.
  • [miniShop2] Fixed popup windows in Internet Explorer.

0.9.4-pl

  • Optimized creating of system settings fo "page_id".

0.9.3-pl

  • [Profile] Added displaying error messages about required fields when user redirected to profile.

0.9.2-pl

  • Added urldecode of action in plugins.
  • Fixed bug with clearing cache of site.

0.9.1-pl

  • [Profile] Username is always the user`s email.
  • [Main] Component set "alow_multiple_emails" to false on installation.

0.9.1-rc

  • [Auth] Improved work in multiple contexts.
  • [Auth] Fixed generated links for contexts in subdirectory.
  • [Auth] Moved "login" and "Logout" logic to system plugin.
  • [Auth] Improved saving "office_auth_page_id" setting.
  • [Profile] mproved saving "office_profile_page_id" setting.
  • [Main] Fixed issues with multiple controllers calls on one page.

0.9.0-pl2

  • Fixed email verification
  • Removed unused files
  • Added integration with HybridAuth 0.7+

0.8.3

  • Fixed wrong values in MS2 orders grid.

0.8.2

  • [Main] Changed hard coded "/manager/" to MODX_MANAGER_URL constant.

0.8.1

  • [Profile] Added system setting "office_profile_required_fields" for requirement from users to fill in this fields.

0.8.0

  • [Auth] Improved activation email.
  • [Auth] Fixed "loginResourceId" and "logoutResourceId".
  • [Profile] Fixed and improved update of profile.
  • [Profile] If user is not authenticated, controller do not redirects to unathorized page anymore.
  • [miniShop2] Fixed work with miniShop2, called on page.
  • [miniShop2] Improved orders table.
  • [miniShop2] If user is not authenticated, controller do not redirects to unathorized page anymore.
  • [miniShop2] Moved "details" link from context menu to the grid column.

0.7.1

  • [Main] Added "office_extjs_css" system setting for specifying custom css for ExtJS.
  • [miniShop2] Customizable orders grid.
  • [miniShop2] Customizable order form.
  • [miniShop2] Customizable address form.
  • [miniShop2] Customizable order product grid.

0.7.0

  • [miniShop2] Added new controller

0.6.0

  • [Main] Preparation for first public release
  • [Auth] Added system setting "office_auth_page_id"
  • [Profile] Added system setting "office_profile_page_id"
  • Added ability to load custom styles and javascript for Auth and Profile controllers.

0.4.0

  • [Main] Main class improvements. Added method Office::addClientExtJS()

0.3.2

  • [Auth] Improved redirect on login\logout

0.3.1

  • [Auth] Added checking of already send activation link
  • [Auth] Added checking of already logged in users

0.3.0

  • [Main] Integration of Ext JS from MODX

0.2.0

  • [Profile] Edit user profile and change email with verification.

0.1.0

  • [Auth] Login\logout

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