Автоматическая выдача прав

В простейшем случае «1С:Шина» создает систему прав, которая не требует программирования. Права контролируются на уровне элементов проекта для нескольких предопределенных категорий пользователей.

Примечание: В приложении этот вариант может совмещаться с более сложным вариантом, использующим самостоятельное формирование разрешений и выдачу экземпляров ключей (подробнее).

Предопределенные ключи доступа

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

  • КлючДоступаДляВсех — этот экземпляр ключа «1С:Шина» автоматически выдает всем пользователям, в том числе анонимным;
  • КлючДоступаДляАутентифицированных — этот экземпляр ключа «1С:Шина» автоматически выдает всем пользователям приложения кроме анонимных;
  • КлючДоступаАдминистратора — этот экземпляр ключа «1С:Шина» автоматически выдает всем пользователям приложения, являющимся его администраторами (свойство подключенного пользователя Пользователи.Объект.Администратор)
Перечисленные экземпляры ключей «1С:Шина» использует самостоятельно, об этом будет рассказано далее.

Кроме перечисленных ключей в «1С:Шине» существует еще один предопределенный ключ доступа КлючДоступаПользователя. Этот класс имеет параметр Пользователь. Благодаря этому параметру ключ имеет столько экземпляров (экземпляров класса), сколько существует подключенных пользователей. «1С:Шина» поддерживает уникальность экземпляров ключей по набору значений их параметров и, значит, для каждого пользователя она будет создавать свой уникальный экземпляр ключа. Например, экземпляр ключа для текущего пользователя:

пер ЭкземплярКлюча = новый КлючДоступаПользователя.Объект(Пользователи.ТекущийПользователь)

В отличие от перечисленных выше трех ключей, экземпляры ключа КлючДоступаПользователя «1С:Шина» самостоятельно только выдает пользователям, но никак не связывает с элементами проекта (не создает разрешения доступа). Вы можете самостоятельно создать разрешения, если ваша система прав построена таким образом, что конкретное право нужно ставить в соответствие конкретному пользователю, без промежуточных понятий типа «роль» и т. п. (подробнее).

Построение автоматической системы прав

В автоматической системе прав права контролируются на уровне элементов проекта. Например, если чтение справочника разрешено — значит, можно читать все его элементы. Если чтение справочника запрещено — ни один из элементов справочника прочитать нельзя.

Управление доступом в проекте

Каждый вид элементов проекта, для которого поддерживается управление доступом, имеет фиксированный набор прав, предоставляемый «1С:Шиной». Например, Справочник имеет права Создание, Чтение, Изменение, Удаление.

Каждый элемент таких видов имеет свойство КонтрольДоступа. В этом свойстве вы можете перечислить, каким образом будет контролироваться доступ к тому или иному праву, например:

КонтрольДоступа: 
    Создание: РазрешеноАутентифицированным
    Чтение: РазрешеноВсем
    ПоУмолчанию: РазрешеноАдминистраторам

ПоУмолчанию — это специальное обозначение, которое подразумевает все права, не перечисленные явно.

РазрешеноАутентифицированным, РазрешеноВсем и РазрешеноАдминистраторам — это способы контроля доступа, использующие предопределенные экземпляры ключей:
  • РазрешеноАутентифицированным использует КлючДоступаДляАутентифицированных;
  • РазрешеноВсем использует КлючДоступаДляВсех;
  • РазрешеноАдминистраторам использует КлючДоступаАдминистратора.

Вычисление разрешений и выдача ключей

Благодаря такому описанию элемента проекта «1С:Шина» автоматически запишет для него разрешения доступа со следующими экземплярами ключей:

<Создание: КлючДоступаДляАутентифицированных>
<Чтение: КлючДоступаДляВсех>
<Изменение, Удаление: КлючДоступаАдминистратора>

При создании этих экземпляров «1С:Шина» сразу же заполнит системную таблицу ключей пользователя, так как в предопределенном элементе проекта Пользователи есть вся информация для привязки того или иного экземпляра ключа к пользователю.

В дальнейшем эта система прав доступа будет поддерживаться следующим образом:
  • При подключении к приложению нового пользователя «1С:Шина» автоматически запишет для него нужный ему предопределенный экземпляр ключа.
  • При изменении существующего пользователя (например, обычному пользователю включили признак того, что он является администратором) «1С:Шина» также автоматически (при записи пользователя) обновит экземпляр ключа этого пользователя с КлючДоступаДляВсех на КлючДоступаАдминистратора.