Базовая настройка
Базовый пример настройки компонента Office. Настройка авторизации, регистрации и вывода профиля пользователя.
Оглавление
В качестве примера, настроим обычный личный кабинет пользователя с авторизацией и редактированием профиля.
Авторизация и регистрация
Личный кабинет будет доступен только для авторизованных пользователей. Их мы будем регистрировать в группу users.
Создадим группу:
Права доступа на контекст назначаем Load, List and View:
Теперь создаём раздел «Личный кабинет», который будет являться контейнером и ссылкой на страницу профиля:
В нем создаем страницу «Профиль»:
В профиле вызываем соответствующий сниппет:
/* modParser */
[[!officeProfile?]]
/* pdoParser */
{$_modx->runSnippet('!officeProfile')}
Теперь нам нужно закрыть эти страницы для доступа всем, кроме группы users. Мы должны дать группе (аноним) доступ Load only, чтобы они могли загрузить страницу, проверить права доступа и получить «403 Доступ запрещен». Если не дать им Load only, то страница для них не будет существовать, и анонимы получат «404 не найдено».
Создаём новую группу ресурсов «Личный кабинет», назначаем ей права и выдаем доступ группе users:
В группу ресурсов добавляем раздел личного кабинета и страницу профиля:
После этого нужно снова зайти в раздел «Контроль доступа» и ужесточить доступ для групп users и (аноним) к этой группе ресурсов, потому что MODx выставляет не совсем верные права по умолчанию. Для Users он ставит Resource, а для (аноним) Load, List and View.
Всё, теперь можно открыть страницу кабинета или профиля из анонимного режима браузера (мы не должны быть авторизированны в админке, т. к. это даёт нам дополнительные права) и получить вывод главной страницы по этому адресу.
Чтобы вместо главной нам показывалась страница «Авторизации», нужно её создать:
Обратите внимание, что я вызываю сниппет officeAuth с параметром groups — это указывает, что пользователя нужно зарегистрировать в группу users, которая как раз и имеет доступ к личному кабинету.
/* modParser */
[[officeAuth?
&groups=`users`
]]
/* pdoParser */
{$_modx->runSnippet('!officeAuth', [
'groups' => 'users'
])}
После указываем id страницы авторизации в системной настройке unauthorized_page:
И теперь в анонимном режиме мы получаем требование авторизации при переходе в личный кабинет.
Но бывают случаи, когда авторизация и регистрация находятся например, в модальных окнах. В этом случае, можно создать отдельную страницу авторизации/регистрации или в системной настройке unauthorized_page указать id страницы 404. Если вдруг, ваш сайт откажется от модального окна авторизации, у вас уже будут готовы настройки для переадресации пользователей на страницу авторизации — это удобно.
Итог
На этом этапе мы настроили:
- Группу для пользователей.
- Скрытие страниц личного кабинета от анонимов.
- Страницу профиля.
- Страницу авторизации и регистрации.
Все сниппеты требуют подключенного jQuery. Теперь у нас на сайте есть необходимый базовый функционал регистрации, авторизации и редактирования профиля.
Время запросов: 0,1180 s
Количество запросов: 27
Источник: cache