Администрирование пользователей

Здравствуйте!
Два вопроса по администрированию пользователей
1. Ограничить доступ к вкладке, к примеру, "Маркетинг"
2. Закрыть для обычных пользователей детали "входит в группы", "взаимосвязи"

Нравится

7 комментариев

Здравствуйте, Эмин!

1. Управлять доступом непосредственно на Рабочие места не получится. Но, ограничив доступ на все разделы в данном рабочем месте, рабочее место пропадет из представления автоматически.

Для того, чтобы запретить доступ к разделу пользователю/группе пользователей, необходимо активировать администрирование по операциям и добавить запрет на все типы операций на раздел:

http://i.piccy.info/i9/76d41e545a17a7d24655b93a5f460751/1394111483/106822/710520/1.jpg

2. С помощью базовых средств настройки Вы можете скрыть данные детали для всех пользователей целиком в настройке рабочих мест, удалив деталь для определенного раздела:

http://i.piccy.info/i9/507a190ab560e5b050ff65b5f29678f5/1394122797/31652/710520/06_03_2014_18_19_37.png

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

Спасибо за ответ.
По поводу детали. Деталь "Доступ" скрыть не удается. Она не отображается при настройке рабочих мест, соответственно ее нельзя удалить. Но если мы заходим в реестр любого модуля, то видим в деталях вкладку "Доступ". Данная вкладка доступна обычным пользователям. Как можно ее скрыть?

Здравствуйте, Эмин.

Если объект раздела администрируется по записям, то в разделе появляется деталь "Доступ". Это заложено в ядре.

Тем не менее, если Вы желаете эту деталь скрыть для отображения для пользователей без прав системного администратора, но при этом, чтобы объект администрировался по записям, необходимо в ScriptTask для события PageLoadComplete раздела прописать следующий код:

Guid roleId = new Guid("83A43EBC-F36B-1410-298D-001E8C82BCAD"); //системные администраторы
Guid currentUserId = UserConnection.CurrentUser.Id;
var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "SysUserInRole");
esq.AddColumn("Id");
esq.AddColumn("SysRole");
esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.NotEqual, 
                "SysUser", currentUserId));
var rolesCollection = esq.GetEntityCollection(UserConnection);
foreach(var role in rolesCollection) {
                if (role.GetTypedColumnValue<Guid>("SysRoleId") == roleId) {
                               for (var i = 0; i != Page.DetailsTabPanel.Tabs.Count - 1; i++) {
                                               if (Page.DetailsTabPanel.Tabs[i].Caption.ToString() == "Доступ") {
                                                               Page.DetailsTabPanel.Tabs[i].Visible = false;
                                               }
                               }
                }
}
return true;

"Безродный Андрей" написал:

Спасибо за помощь, разобрался.
Чтобы не создавать темы, спрошу в этой.
Пытаюсь добавить в едином окне реестр с обращениями. Создаю страницу реестра обращений в едином окне, которая наследуется от реестра обращений. Но в едином окне, реестр обращений не отображаются, а кнопки добавления, изменения и тп недоступны

Эмин, необходимо выгрузить данные, сами они туда не попадут.
На событии PageLoadComplete следует получить экземпляр источника данных, при необходимости наложить фильтры и выполнить LoadRows().
Очень наглядный пример есть в методе PrepareSchedule(), процесса страницы ManagersModulePage.

Еще раз по разграничению доступа к вкладкам (Маркетинг, Продажа и тп). К примеру доступ к вкладке Инструменты доступен только админам, необходимо сделать по аналогии, чтобы каждой роли была видна своя вкладка и все. В каком Процессе скрывается вкладка Инструменты?

Администрирования доступа к рабочим местам не существует. Рабочее место будет скрыто, если у пользователя нет прав доступа на все разделы, которые включены в данное рабочее место.

Показать все комментарии