Добрый день
Подскажите, пожалуйста, оптимальный способ управления правами доступа для контроллов
В основном интересует отображения кнопок для разных пользователей
на сколько могу судить, как вариант - в скрипте иницилизации окна проверять текущего пользователя (что-то вроде if (Connector.CurrentUser.ContactID = {...}) и делать элементы видимыми), но может есть "штатные" незамеченные мною способы
Нравится
Не знаю про штатные возможности для таких случаев, но я бы всё таки не на пользователей ориентировался, а на группы пользователей, а то такой 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
Да, указанный вариант решает проблему раздачи разных прав на разные контролы.