Оглавление

В качестве примера, настроим обычный личный кабинет пользователя с авторизацией и редактированием профиля.

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

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

Создадим группу:

MODx Office - Создание группы пользователей

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

MODx Office - Права доступа на контекст для группы пользователей

Теперь создаём раздел «Личный кабинет», который будет являться контейнером и ссылкой на страницу профиля:

MODx Office - создаём раздел «Личный кабинет»

В нем создаем страницу «Профиль»:

MODx Office - создаём страницу «Профиль»

В профиле вызываем соответствующий сниппет:

/* modParser */
[[!officeProfile?]]

/* pdoParser */
{$_modx->runSnippet('!officeProfile')}

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

Создаём новую группу ресурсов «Личный кабинет», назначаем ей права и выдаем доступ группе users:

MODx Office - создаём группу ресурсов «Личный кабинет»

 В группу ресурсов добавляем раздел личного кабинета и страницу профиля:

MODx Office - добавляем в группу ресурсов страницы личного кабинета

После этого нужно снова зайти в раздел «Контроль доступа» и ужесточить доступ для групп users и (аноним) к этой группе ресурсов, потому что MODx выставляет не совсем верные права по умолчанию. Для Users он ставит Resource, а для (аноним) Load, List and View.

MODx Office - выставляем права к группе ресурсов для группы пользователей users

MODx Office - выставляем права к группе ресурсов для группы пользователей (аноним)

Всё, теперь можно открыть страницу кабинета или профиля из анонимного режима браузера (мы не должны быть авторизированны в админке, т. к. это даёт нам дополнительные права) и получить вывод главной страницы по этому адресу.

Чтобы вместо главной нам показывалась страница «Авторизации», нужно её создать:

MODx Office - Создаем страницу авторизации

Обратите внимание, что я вызываю сниппет officeAuth с параметром groups — это указывает, что пользователя нужно зарегистрировать в группу users, которая как раз и имеет доступ к личному кабинету.

/* modParser */
[[officeAuth?
    &groups=`users`
]]

/* pdoParser */
{$_modx->runSnippet('!officeAuth', [
'groups' => 'users'
])}

После указываем id страницы авторизации в системной настройке unauthorized_page:

MODx Office - Указываем id страницы авторизации в системной настройке unauthorized_page

И теперь в анонимном режиме мы получаем требование авторизации при переходе в личный кабинет.

Но бывают случаи, когда авторизация и регистрация находятся например, в модальных окнах. В этом случае, можно создать отдельную страницу авторизации/регистрации или в системной настройке unauthorized_page указать id страницы 404. Если вдруг, ваш сайт откажется от модального окна авторизации, у вас уже будут готовы настройки для переадресации пользователей на страницу авторизации — это удобно.

Итог

На этом этапе мы настроили:

  1. Группу для пользователей.
  2. Скрытие страниц личного кабинета от анонимов.
  3. Страницу профиля.
  4. Страницу авторизации и регистрации.

Все сниппеты требуют подключенного jQuery. Теперь у нас на сайте есть необходимый базовый функционал регистрации, авторизации и редактирования профиля.