Вопрос

Как выдать права на просмотр объекта через скрипт в бизнес-процессе ?

Есть БП, который создаёт объекты через

new Insert(userConnection).Into("UsrCards")

Нужно сразу после создания давать права на этот объект людям, у которых есть конкретная роль. Давать права через элемент БП Change access rights в нашем случае неудобно, поэтому надо через код. Пока вроде понял, что нужен UserConnection.DBSecurityEngine, но вот не пойму, где найти нужный мне метод для него.

Нравится

2 комментария
Лучший ответ

Пример раздачи прав через DBSecurityEngine есть в методе CheckTagTypeAndGrantAdditionalRights в процесе на объекте CampaignTag. Там пример такой:

 

UserConnection.DBSecurityEngine.SetEntitySchemaRecordRightLevel(TSConfiguration.BaseConsts.PortalUsersSysAdminUnitUId, 

                        Entity.Schema, Entity.PrimaryColumnValue, SchemaRecordRightLevels.All); 

 

то есть в метод аргументами передаются:

TSConfiguration.BaseConsts.PortalUsersSysAdminUnitUId - Id пользователя или роли;

Entity.Schema - название объекта;

Entity.PrimaryColumnValue - Id записи из этого объекта;

SchemaRecordRightLevels.All - уровень прав доступа.

 

Еще пример - процесс на объекте Activity из пакета Base (тот же метод SetEntitySchemaRecordRightLevel). Можете локально отладить (на запись маркетинговой кампании добавить тэг и посмотреть что в этом методе передается в аргументах).

 

Также можете попробовать использовать RightsManagerHelper пакета PRMBase или пример в SocialSubscriptionService пакета ESN, там аналогичные операции доступны.

Пример раздачи прав через DBSecurityEngine есть в методе CheckTagTypeAndGrantAdditionalRights в процесе на объекте CampaignTag. Там пример такой:

 

UserConnection.DBSecurityEngine.SetEntitySchemaRecordRightLevel(TSConfiguration.BaseConsts.PortalUsersSysAdminUnitUId, 

                        Entity.Schema, Entity.PrimaryColumnValue, SchemaRecordRightLevels.All); 

 

то есть в метод аргументами передаются:

TSConfiguration.BaseConsts.PortalUsersSysAdminUnitUId - Id пользователя или роли;

Entity.Schema - название объекта;

Entity.PrimaryColumnValue - Id записи из этого объекта;

SchemaRecordRightLevels.All - уровень прав доступа.

 

Еще пример - процесс на объекте Activity из пакета Base (тот же метод SetEntitySchemaRecordRightLevel). Можете локально отладить (на запись маркетинговой кампании добавить тэг и посмотреть что в этом методе передается в аргументах).

 

Также можете попробовать использовать RightsManagerHelper пакета PRMBase или пример в SocialSubscriptionService пакета ESN, там аналогичные операции доступны.

Oleg Drobina,

Спасибо, получилось сделать.

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