права доступа для контроллов

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

на сколько могу судить, как вариант - в скрипте иницилизации окна проверять текущего пользователя (что-то вроде if (Connector.CurrentUser.ContactID = {...}) и делать элементы видимыми), но может есть "штатные" незамеченные мною способы

Нравится

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

Не знаю про штатные возможности для таких случаев, но я бы всё таки не на пользователей ориентировался, а на группы пользователей, а то такой if (Connector.CurrentUser.ContactID = {...}) может оказаться довольно большим... да и пользователей, наверняка, придется не один раз добавлять...

а как получить ID группы в которую входит текущий пользователь? или проверять запросом?

да, можно просто проверить запросом...

Штатных способов управления доступом для контролов нет. Если есть такая необходимость, то нужно зависимо от условия попадания текущего пользователя в список предопределенных пользователей или групп устанавливать свойства IsVisible или же IsEnabled контрола в False.
Как пользователи, так и группы пользователей хранятся в tbl_AdminUnit. Признак группы - IsGroup равен 1. Чтобы получить пользователей конкретной группы нужно смотреть таблицу tbl_UserInGroup и фильтровать ее по полю GroupID, куда поставить необходимый ID группы из tbl_AdminUnit.

Была похожая задача (скрытие контролов), реализовал следующим образом:

1. В теги контролов через разделитель "|" прописывались группы tbl_AdminUnit
2. В базовом скрипте на событии OnPrepare перебирались контролы окна, считывались теги и извлекались группы
3. Если пользователь не входил в одну из групп, то IsVisible для него false

Да, указанный вариант решает проблему раздачи разных прав на разные контролы.

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