Управление ролями и пользователями на сайте
Роли определяют полномочия пользователя в системе. У каждого пользователя может быть несколько ролей. Назначением ролей заведует администратор системы (статью по описанию интерфейса администратора-разработчика можно прочитать здесь).
Создание Ролей
Управление ролями осуществляется в меню Пользователи / Роли (/roles). Здесь расположена таблица Роли (roles).
При этом открывается модальное окно (форма registrationUserInRole), где необходимо указать логин, пароль, email и выбрать одну из имеющихся ролей для создаваемого пользователя.
В таблице as_users хранятся общие данные по пользователям (телефон, почта и т. д.).
Логин пользователя - латинскими малыми буквами без дефисов и пробелов (например, фамилия человека и инициалы, часто логином может служить e-mail).
Доступ в системе назначается на основании ролей, поэтому необходимо давать пользователю минимальный набор ролей, необходимый для работы этого пользователя.
Структура данных по пользователям
Таблица Пользователи
На странице Пользователи (/members) расположена таблица управления пользователями.
Для более детальной информации по людям используются Контакты (ctr_contacts), связь идет по username. Контакты привязаны к неким Контрагентам (ctr_contragents). И эти контрагенты уже привязаны к различным бизнес сущностям (например, поставщики, клиенты и т.д.).
Для аватара пользователя используется ресурс userImage.
Если при регистрации нового пользователя необходимо сразу помещать информацию о нём в Контакты, Контрагенты, и возможно еще и в специализированную таблицу (перечень поставщиков, клиентов, подрядчиков, либо партнеров и т.д.), то обработку этих вставок вам необходимо добавить в форму регистрации нового пользователя (registrationUserInRole).
Информационное окошко по пользователю
Из таблицы Пользователи в первом столбце (i) есть выход на модальное окошко userInfo. Здесь выводится аватар пользователя (ресурс userImage) и информация из as_users в кратком виде на просмотр.
Страница Мой профиль
На странице профиля (/user) выводится форма Управление пользователем (editProfile). Здесь есть возможность редактировать данные по пользователю из as_users.
Страница пользователя
На странице Пользователь (/member?username=...) выводится форма user с данными из as_users на просмотр, ресурсом userImage, а также перечнем всех ролей пользователя с возможностью редактирования (флажки).
Изменение принадлежности к ролям
Как правило страница с перечнем пользователей, а также страницы с информацией по отдельным пользователям доступна Администратору сайта. В его полномочиях изменять набор ролей, в которые входит пользователь.
Сделать это можно на странице пользователя на форме user. Одна из колонок представлена типом Флажки, в которую выбираются все имеющиеся в системе роли. Администратор выставляет флажки напротив выбранных ролей для конкретного пользователя.
Отслеживание пользователей онлайн
На сайте можно показывать онлайн пользователь или нет.
Для этого используется разметка:
<div class="as-online" data-username="demo1"></div>
Пример использования также можно увидеть в таблице Пользователи.
- По периоду (по умолчанию 30 сек) будет опрашиваться страница и обновлять эти элементы, если они присутствуют (т.е. вставляться значок с text-success или text-danger). Т.е. данная разметка принимает вид только значка без дополнительных элементов. Период можно изменить через настройку online.period в as.systemOptions.js
- Если необходимо принудительно вызвать запуск обновления статусов, то используйте JS функцию as.online.reInit(); (но с подгрузкой скрипта as.online.js)
- Если поставить настройку online.disableCheck=true в as.systemoptions.js, то показ статуса будет отключен.
as.sys.loadLib({
jslink: as.options.jsLoadableURLFormat.format("as.online"),
csslink: "",
conditionObject: as.online,
callback: function () {
as.online.reInit();
},
isCacheable: true
});
Вы можете изменить вывод разметки элемента через функцию as.onlineGetOnlineMakeup:
as.onlineGetOnlineMakeup = function(st){
var s = "";
return s;
}
Страница входа в систему
Вы можете добавить ссылки на Регистрацию и Восстановление пароля на странице.
Для этого используйте в глобальном CSS:
.regBtn, .forgotpasswordBtn{ display: inline-block !important;}
Кнопки будут ссылаться на страницу /reg и /forgot-password соответственно. Вам необходимо создать страницы под них и использовать компонент Форма.
Также вы можете добавить свою кастомную разметку через настройку с кодом LoginCustomMakeup (она будет добавлена перед кнопкой Войти).
Вы можете назначить класс для поля логина через настройку с кодом LoginInputCssClass.
Если передан URL параметр returnurl на страницу, то при успешном входе будет перенаправление на эту страницу (изначально работа страниц noaccess и
главной при отсутствии доступа перенаправляют на эту страницу с данным параметром).
Вы можете сделать кастомную разметку тела страницы /accountLogin через Lang метку в /langs / langValues с кодом LoginMakeup, partCode=login, в которой есть параметр {loginForm}. После изменения метки, не забудьте сбрасывать общий кеш.
Установка SEO метатегов по странице /account/login делается через языковые метки (на /langs с part=login): LoginTitle, LoginDescription, LoginKeywords, LoginRobots.
Пример:
<div style="width: 500px; margin: 0 auto;">
<h1><i class="fas fa-sign-in-alt mr-1"></i> Sign in</h1>
<hr>
{loginForm}
</div>
Также вы можете установить SQL коллбек falcon_afterLogin для выполнения некоторых действий после успешного входа пользователя в систему:
CREATE OR ALTER PROCEDURE [dbo].falcon_afterLogin
@parameters ExtendedDictionaryParameter READONLY, -- userGuid, langID
@username nvarchar(32)
AS
BEGIN
exec as_print @str='falcon_afterLogin'
-- SELECT 1 Msg, Result, RediectUrl
select 1 Result, '' Msg, '' RedirectUrl
-- SELECT 2 Outer commands
select '' type
END
Коллбек на неверный вход - процедура falcon_afterFailLogin
На входе:
- @username - какой username ввел пользователь.
- @parameters - доп параметры в Key, Value2 (msg, password)
На выходе
- SELECT 1 Msg, Result (если Msg непустой, то оно будет использовано для вывода пользователю).
- SELECT 2 Внешние действия.
Пример процедуры:
CREATE OR ALTER PROCEDURE [dbo].falcon_afterFailLogin
@parameters ExtendedDictionaryParameter READONLY, -- userGuid, langID
@username nvarchar(32)
AS
BEGIN
declare @msg nvarchar(max) = (select value2 from @parameters where [key]='msg')
declare @pass nvarchar(max) = (select value2 from @parameters where [key]='password')
exec as_print @str='falcon_afterFAILLogin'
exec as_print @str=@msg
exec as_print @str=@pass
-- SELECT 1 Msg, Result, RediectUrl
select 1 Result, '' Msg, '' RedirectUrl
-- SELECT 2 Outer commands
select '' type
END
Дополнительные проверки пользователя при входе
Данную процедуру можно использовать для дополнительных проверок входа пользователя. Если в SELECT 1 вернуть Result=0, то пользователь не войдет под своим аккаунтом, при этом будет выведено сообщение Msg. Если задан RedirectUrl, то после успешного входа пользователь будет перенаправлен на данный URL.
Есть возможность полностью заблокировать страницу /account/login (например, используя другие формы кастом формы входа). Для этого создайте в /settings настройку DisableAccountLoginPage = 1
Куда перенаправляется пользователь после входа?
При успешном входе применяются следующие правила (в порядке приоритета):
1. Если есть процедура falcon_afterLogin с непустым RedirectUrl в SELECT 1, то пользователь переходит по указанному адресу после успешного входа
2. Если есть у ролей пользователя страницы с галочкой Панель управления и В меню, то выбирается первая из них (минимальное значение Порядок в меню) для перехода после входа.
3. Переход на главную страницу.
Нормализация логина пользователя при входе в систему
В некоторых случаях необходима нормализация логина, приведение к единому виду.
Для этого используется процедура falcon_normalizeLogin. Она выполняется ДО проверки доступа по логину и паролю. На входе username, введенный пользователь. На выходе будет username, который будет проверяться системой для входа.
Вы можете ее использовать при регистрации в форме. Если подобная процедура существует, то она будет вызываться и при входе в систему для обработки входящего логина.
CREATE PROCEDURE [dbo].falcon_normalizeLogin @login nvarchar(128)
AS BEGIN
select lower(@login)
END
Вход и регистрация через социальные сети
На странице входа можно реализовать возможность входа и регистрации через социальные сети. Для этого используйте сервис uLogin (действий на внешнем сервисе не требуется выполнять).
Для этого необходимо реализовать следующие процедуры:
Настройка параметров виджета социальных сетей
CREATE procedure [dbo].[user_getSocialSettings]
AS
BEGIN
SELECT 1 [Enabled], 'panel' Display, 'classic' Theme,
'first_name,last_name,email' Fields,
'facebook,instagram,vkontakte,odnoklassniki' Providers,
'crm' RegRole, 'soc-{email}' UsernameFormat -- uid, email
END
Важные параметры:
- Enabled. Если Enabled=1, то доступна возможность регистрации через социальные сети.
- RegRole - указывает, какая роль будет добавлена новым пользователям, зарегистрированным через социальные сети.
- UsernameFormat - определяет как будет формироваться имя пользователя на основе данных из социальной сети. Можно использовать 2 переменных {email} и {uid}.
Настройка кастомной процедуры создания пользователя (необязательная)
Данная процедура вызывается после создания системного пользователя и назначения ему роли RegRole. Ее можно использовать для создания дополнительных объектов в базе и подготовки письма.
CREATE PROCEDURE[dbo].[user_createSocialUser]
@username nvarchar(128), @role nvarchar(64), @email nvarchar(128), @firstName nvarchar(128), @lastName nvarchar(128), @network nvarchar(128), @uid nvarchar(128), @verifiedEmail nvarchar(128), @url nvarchar(256)=''
-- ВАЖНО. Параметр добавился 06.11.19
AS BEGIN
-- создание дополнительных объектов
SELECT 1 Result, '' Msg, 'Регистрация' EmailSubject,
@username + ' - ' + @role + ' - ' + @email + ' - ' + @firstName + ' - ' + @lastName + ' - '+ @network + ' - ' + @uid + ' - ' + @verifiedEmail EmailBody
END
В параметре @url передается исходный адрес страницы, например, /account/login/supplier (чтобы можно было регистрировать пользователей под разные роли) исходя из URL.
Выходная модель содержит стандартные Result (1 если все хорошо) и Msg (текст ошибки), а также EmailBody и EmailSubject.
Письмо отправляется только если EmailBody непустое.
Примечание
Для регистрации пользователей для разных ролей, необходимо видоизменять ссылку, например:
/account/login/supplier
/account/login/customer
В итоге этот адрес передается в параметре @url в процедуру user_createSocialUser. В ней вы можете сравнить url и назначить соответствующую роль.
ВАЖНО. Никогда не назначайте роль беря название прямо из параметра!!! (в него могут передать все что угодно, например значение admin)
Отслеживание действий пользователя
В таблицу as_trace автоматически логируются записи по следующим событиям:
-
exception - если возникла ошибка, при этом указывается где и какая ошибка
-
pv - просмотр страницы, указывается ссылка на страницу
-
sf - сохранение формы, указывается какая форма была сохранена
Например, при регистрации нового пользователя можно добавлять в as_trace запись с кодом reg, в header указывать роль с которой был зарегистрирован пользователь,
а в text логин и пароль зарегистрировавшегося пользователя.
Google поиск по нашей документации
- Руководства
- Основа Falcon Space Из чего состоит веб-платформа Falcon Space Настройки системы Работа со страницами Создание структуры БД - создание таблиц БД и связей между ними Описание кабинета для администрации сайта (роль editor) Описание интерфейса администратора-разработчика веб-платформы Внешние действия (уведомления, пуш, email, вызов API) Управление ролями и пользователями на сайте Система периодических событий на сайте (планировщик, крон, cron) Универсальный поиск по личному кабинету на сайте Falcon Space. Словарь терминов Соглашения по SQL коду в платформе
- Основные компоненты
- Возможности
- Коммуникация с пользователем
- Дизайн, стилизация, юзабилити
- Лендинги
- Универсальный API
- Примеры интеграций
- Каталоги
- Навигация
- Документы
- Дополнительные компоненты
- Продвижение, SEO
- Системные моменты
- Системное администрирование
- HOWTO
- Таблицы
- Формы
- Загрузка файлов, картинок
- Работа с SQL
- HOWTO JS
- HOWTO Верстка
- Решение проблем
Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта