При переносе данных из одной информационной базы в другую может возникнуть необходимость перенести и пользователей информационной базы. Для этого можно воспользоваться свойством глобального контекста ПользователиИнформационнойБазы
Добавление пользователя информационной базы
1 2 3 4 5 6 7 8 9 10 11 12 |
НовыйПользователь = ПользователиИнформационнойБазы.СоздатьПользователя(); НовыйПользователь.Имя = "Имя"; НовыйПользователь.ПолноеИмя = "Фамилия Имя Отчество"; НовыйПользователь.АутентификацияСтандартная = Истина; НовыйПользователь.ОсновнойИнтерфейс = Метаданные.Интерфейсы.Администратор; НовыйПользователь.Пароль = "пароль"; НовыйПользователь.Роли.Добавить(Метаданные.Роли.Администратор); НовыйПользователь.ПоказыватьВСпискеВыбора = Ложь; НовыйПользователь.Язык = Метаданные.Языки.Русский; НовыйПользователь.Записать(); |
Следует отметить, что в свойство Пароль можно только записать новый пароль, прочитать записанный (определенный) ранее нет возможности.
Добавление новых пользователей в информационную базу может осуществлять пользователь, обладающий административными правами. Если административные права у пользователя отсутствуют, он может изменить только ограниченный набор сведений о себе.
Для того чтобы предоставить, например, менеджеру, не имеющему административных прав, возможность добавления новых пользователей с правами менеджера, можно поступить следующим образом.
Создать обработку, с помощью которой менеджер будет задавать имя, пароль, набор ролей и другие свойства нового пользователя. Однако запись нового пользователя выполнять не на клиенте, а на сервере, передав нового пользователя в качестве параметра в процедуру привилегированного модуля.
Вызов процедуры привилегированного модуля
1 |
ЗаписатьНовогоПользователя(НовыйПользователь); |
В этом случае система не будет выполнять проверку прав пользователя, поэтому о проверке необходимых прав нужно позаботиться самостоятельно. Например, процедура привилегированного модуля может выглядеть следующим образом.
Текст процедуры привилегированного модуля
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Процедура ЗаписатьНовогоПользователя(НовыйПользователь) Экспорт // Проверить наличие роли Администратор у нового пользователя. РольАдминистратор = Метаданные.Роли.Администратор; Если НовыйПользователь.Роли.Содержит(РольАдминистратор) Тогда Сообщить("Добавление пользователя с административными правами запрещено"); Иначе // у нового пользователя нет роли Администратор // Проверить, что текущий пользователь обладает правами Менеджера или Администратора. Если РольДоступна(РольАдминистратор) ИЛИ РольДоступна(Метаданные.Роли.Менеджер) Тогда // Выполнить запись нового пользователя. НовыйПользователь.Записать(); Иначе Сообщить("Недостаточно прав доступа для добавления пользователя"); КонецЕсли; КонецЕсли; КонецПроцедуры |
Если выполняется попытка добавить нового пользователя с административными правами, выдается запрет. Если набор ролей нового пользователя не содержит роль Администратор, проверяется, является ли текущий пользователь менеджером или администратором, и если это так, то выполняется запись нового пользователя. В противном случае выдается сообщение об отсутствии прав доступа.