Перейти к основному содержимому

Способы хранения дополнительной информации о пользователях

Для того чтобы в обработчике события ПроверитьНаличиеКлючейДоступа выдать экземпляры ключей тем или иным пользователям, как правило, требуется дополнительная информация о пользователях.

Такую дополнительную информацию может вручную предоставить, например, администратор приложения — после подключения пользователя к приложению установить у пользователя те или иные настройки доступа.

Такую информацию можно получить из другой системы в момент выдачи экземпляров ключей. Рассмотрим эти варианты подробнее.

Утверждения — свойство подключенного пользователя

В простейшем случае дополнительную строковую информацию можно хранить в свойстве пользователя Утверждения. Это соответствие, в котором и ключ, и значение имеют тип Строка. Например:

// Пользователь1 и Пользователь2 - переменные типа Пользователь.Ссылка
Пользователи.УстановитьУтверждение(Пользователь1, "ЭтоИнформационнаяСистема", "Истина")
Пользователи.УстановитьУтверждение(Пользователь2, "ЭтоАдминистраторАбонента", "Истина")

При выдаче экземпляров ключей достаточно будет проверить значение того или иного утверждения, установленного пользователю:

если Пользователь1.Утверждения.ПолучитьИлиУмолчание("ЭтоИнформационнаяСистема") == "Истина"
// Выдать пользователю экземпляр ключа для информационной системы.
;

«Шина» автоматически выполняет пересчет экземпляров ключей доступа в следующих случаях:

  • при создании нового пользователя, если для пользователя заполнено свойство Утверждения;
  • при обновлении пользователя, если изменилось значение свойства Утверждения.

Запрос к другой системе

Для получения данных о пользователе приложение может обращаться к другим, сторонним сервисам. Например, так:

// user1 - некоторый идентификатор  пользователя, по которому можно получить
// информацию о нем во внешней системе
пер Запрос = КлиентHttp.СБазовымUrl("http://example.com")
.ЗапросGet("user-info?user1")
исп Ответ = Запрос.Выполнить()
пер ДанныеОтвета = JSONВДанные(Ответ.Тело.ПрочитатьКакСтроку())
если ДанныеОтвета["leader"]
// Выдать пользователю экземпляр ключа руководителя.
;