Дата публикации
30 Ноября 2019
Дата изменения
5 Июля 2020
Уникальных просмотров
2.473

Оглавление

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

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

Личный кабинет будет доступен только для авторизованных пользователей. Их мы будем регистрировать в группу 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. Теперь у нас на сайте есть необходимый базовый функционал регистрации, авторизации и редактирования профиля.

Благодарность автору

Если по какой-либо причине вы хотите поблагодарить автора данного ресурса, вы можете это сделать одним из удобных для вас способов ниже.

Один из самых популярных способов поблагодарить автора, воспользоваться сервисом Яндекс.Деньги.

Время работы: 0,1377 s
Время запросов: 0,1377 s
Количество запросов: 27
Источник: cache