Автоматическая выдача прав
В простейшем случае «1С:Шина» создает систему прав, которая не требует программирования. Права контролируются на уровне элементов проекта для нескольких предопределенных категорий пользователей.
Предопределенные ключи доступа
В «1С:Шине» существует три предопределенных ключа доступа, каждый из которых имеет единственный экземпляр:
- КлючДоступаДляВсех — этот экземпляр ключа «1С:Шина» автоматически выдает всем пользователям, в том числе анонимным;
- КлючДоступаДляАутентифицированных — этот экземпляр ключа «1С:Шина» автоматически выдает всем пользователям приложения кроме анонимных;
- КлючДоступаАдминистратора — этот экземпляр ключа «1С:Шина» автоматически выдает всем
пользователям приложения, являющимся его администраторами (свойство подключенного пользователя
Пользователи.Объект.Администратор
)
Кроме перечисленных ключей в «1С:Шине» существует еще один предопределенный ключ доступа КлючДоступаПользователя. Этот класс имеет параметр Пользователь. Благодаря этому параметру ключ имеет столько экземпляров (экземпляров класса), сколько существует подключенных пользователей. «1С:Шина» поддерживает уникальность экземпляров ключей по набору значений их параметров и, значит, для каждого пользователя она будет создавать свой уникальный экземпляр ключа. Например, экземпляр ключа для текущего пользователя:
пер ЭкземплярКлюча = новый КлючДоступаПользователя.Объект(Пользователи.ТекущийПользователь)
В отличие от перечисленных выше трех ключей, экземпляры ключа КлючДоступаПользователя «1С:Шина» самостоятельно только выдает пользователям, но никак не связывает с элементами проекта (не создает разрешения доступа). Вы можете самостоятельно создать разрешения, если ваша система прав построена таким образом, что конкретное право нужно ставить в соответствие конкретному пользователю, без промежуточных понятий типа «роль» и т. п. (подробнее).
Построение автоматической системы прав
В автоматической системе прав права контролируются на уровне элементов проекта. Например, если чтение справочника разрешено — значит, можно читать все его элементы. Если чтение справочника запрещено — ни один из элементов справочника прочитать нельзя.
Управление доступом в проекте
Каждый вид элементов проекта, для которого поддерживается управление доступом, имеет фиксированный набор прав, предоставляемый «1С:Шиной». Например, Справочник имеет права Создание, Чтение, Изменение, Удаление.
Каждый элемент таких видов имеет свойство КонтрольДоступа. В этом свойстве вы можете перечислить, каким образом будет контролироваться доступ к тому или иному праву, например:
КонтрольДоступа:
Создание: РазрешеноАутентифицированным
Чтение: РазрешеноВсем
ПоУмолчанию: РазрешеноАдминистраторам
ПоУмолчанию — это специальное обозначение, которое подразумевает все права, не перечисленные явно.
- РазрешеноАутентифицированным использует КлючДоступаДляАутентифицированных;
- РазрешеноВсем использует КлючДоступаДляВсех;
- РазрешеноАдминистраторам использует КлючДоступаАдминистратора.
Вычисление разрешений и выдача ключей
Благодаря такому описанию элемента проекта «1С:Шина» автоматически запишет для него разрешения доступа со следующими экземплярами ключей:
<Создание: КлючДоступаДляАутентифицированных>
<Чтение: КлючДоступаДляВсех>
<Изменение, Удаление: КлючДоступаАдминистратора>
При создании этих экземпляров «1С:Шина» сразу же заполнит системную таблицу ключей пользователя, так как в предопределенном элементе проекта Пользователи есть вся информация для привязки того или иного экземпляра ключа к пользователю.
- При подключении к приложению нового пользователя «1С:Шина» автоматически запишет для него нужный ему предопределенный экземпляр ключа.
- При изменении существующего пользователя (например, обычному пользователю включили признак того, что он является администратором) «1С:Шина» также автоматически (при записи пользователя) обновит экземпляр ключа этого пользователя с КлючДоступаДляВсех на КлючДоступаАдминистратора.