7.6
Enabled
rules
организационные роли
Технические вопросы
7.x

Добавить правила по ролям

Здравствуйте

Есть задача скрыть редактирование поля страны в детали по организационным ролям(супервайзер, руководители, менеджеры), закрыть право на редактирование для менеджеров.
Пробывал разные варианты через конфигурацию и добавления правил, все равно не работает.
Версия bpm7.6.

Как лучше мне это сделать?

Нравится

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

Здравствуйте, Сергей!

Вы можете видимость поля задать бизнес правилом. Параметр видимости будет определяться в момент открытия страницы редактирования (Вам необходимо переопределить метод onEntityItialized()). Замещенный метод onEntityItialized() должен вызывать родительский, а также проверять вхождение пользователя в роли (используйте ESQ по объекту SysAdminUnitInRole). Обратите внимание, что один пользователь может входить в несколько ролей.

Сформировал запрос к таблице SysAdminUnitInRole по своей Id

[sql]
SELECT *
FROM dbo.SysAdminUnit sa LEFT JOIN
dbo.SysAdminUnitInRole saur ON sa.Id = saur.SysAdminUnitId
WHERE sa.Id = 'мой Id'
[/sql]

Вернуло 3 строки - это означает, что в меня есть 3 роли?

Да, это значит что Администратор с sa.Id = 'мой Id' входит в три роли
Если вы выполните

[sql]
SELECT saur.SysAdminUnitId, saur.SysAdminUnitRoleId
FROM dbo.SysAdminUnitInRole saur
Where saur.SysAdminUnitId = 'мой Id'
[/sql]
То увидите айдишники ролей

Спасибо за подсказку, пытался вывести название ролей:

[sql]
SELECT saur.SysAdminUnitId, saur.SysAdminUnitRoleId, s.Name
FROM dbo.SysAdminUnitInRole saur Left JOIN
dbo.SysAdminUnit s ON saur.SysAdminUnitId = s.Id
WHERE saur.SysAdminUnitId = 'мой Id'
[/sql]

Результат имя моего контакта. Может я неправильно делаю?

так ваш запрос и выводит имя контакта из s.Name (SysAdminUnit)

можно сделать так
[sql]
select s.Name
from SysAdminUnit s
where s.id in (
select saur.SysAdminUnitRoleId
from dbo.SysAdminUnitInRole saur
where saur.SysAdminUnitId = 'мой Id'
)
[/sql]

Вот только одна запись похоже тоже будет вашим контактом, т.к. есть соответствие одинаковых id в SysAdminUnitInRole

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