CreatiumMax

Общие принципы

В каждом проекте есть 2 таблицы, которые невозможно удалить, и на которых строится пользовательский функционал. Это таблицы “Пользователи” и “Сессии”.

Когда посетитель впервые открывает сайт в браузере, создается сессия. При повторном заходе мы узнаем посетителя по Cookies, и его сессия продолжается. Таким образом мы можем “запоминать” посетителей и сохранять в сессии какие-то данные (в колонке data) с помощью сценариев. Время жизни сессии ограничено датой, указанной в колонке expires.

Данные текущей сессии доступны в редакторе страниц:

Так же, сессии доступны в сценариях. Каждый раз, когда сценарий выполняется со страницы (с помощью формы, других компонентов или функции page.executeBackendScenario), в сценарии доступна переменная session, с текущими данными сессии посетителя.

Важно: чтобы изменить сессию, нужно вносить изменения не в переменную сценария, а в соответствующую запись в таблице "Сессии".

Значение member_id сессии может содержать идентификатор пользователя. Если он указан — посетитель считается авторизованным пользователем, если не указан — посетитель считается гостем.

Данные пользователей при этом хранятся в таблице “Пользователи”. Набор колонок в этой таблице может быть произвольным.

Это крайне простая, но невероятно гибкая схема позволяет реализовать функционал пользователей любой сложности с помощью сценариев.

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

"Регистрация" пользователя — это добавление новой записи в таблицу "Пользователи".

"Авторизация" пользователя — это указание идентификатора пользователя в колонку member_id сессии.

"Выход" пользователя — это очистка (установка пустой строки) колонки member_id для сессии.

Более сложный пример — двухфакторная авторизация, может быть реализована следующим образом:

  1. Пользователь вводит основной пароль

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

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

Было полезно?

Остались вопросы? — Напишите нам в чат поддержки будучи авторизованным в своем аккаунте cremax.ru или через чат поддержки в Телеграме: @CreatiumMaxSupportBot