В каждом проекте есть 2 таблицы, которые невозможно удалить, и на которых строится пользовательский функционал. Это таблицы “Пользователи” и “Сессии”.
Когда посетитель впервые открывает сайт в браузере, создается сессия. При повторном заходе мы узнаем посетителя по Cookies, и его сессия продолжается. Таким образом мы можем “запоминать” посетителей и сохранять в сессии какие-то данные (в колонке data) с помощью сценариев. Время жизни сессии ограничено датой, указанной в колонке expires.
Данные текущей сессии доступны в редакторе страниц:
Image without caption
Image without caption
Так же, сессии доступны в сценариях. Каждый раз, когда сценарий выполняется со страницы (с помощью формы, других компонентов или функции page.executeBackendScenario), в сценарии доступна переменная session, с текущими данными сессии посетителя.
Image without caption
Важно: чтобы изменить сессию, нужно вносить изменения не в переменную сценария, а в соответствующую запись в таблице “Сессии”.
Значение member_id сессии может содержать идентификатор пользователя. Если он указан — посетитель считается авторизованным пользователем, если не указан — посетитель считается гостем.
Данные пользователей при этом хранятся в таблице “Пользователи”. Набор колонок в этой таблице может быть произвольным.
Это крайне простая, но невероятно гибкая схема позволяет реализовать функционал пользователей любой сложности с помощью сценариев.

Примеры сценариев

“Регистрация” пользователя — это добавление новой записи в таблицу “Пользователи”.
“Авторизация” пользователя — это указание идентификатора пользователя в колонку member_id сессии.
“Выход” пользователя — это очистка (установка пустой строки) колонки member_id для сессии.
Более сложный пример — двухфакторная авторизация, может быть реализована следующим образом:
  1. Пользователь вводит основной пароль
  1. В случае успеха, его перенаправляет на страницу ввода временного кода, в то же время, сценарий отправляет пользователю временный код (электронной почтой, смс, или другими способами рассылки сторонних сервисов).
  1. Пользователь вводит полученный временный код. В случае если код был указан верно, пользователь авторизуется успешно.
Image without caption

При поддержке Notaku
Поделиться