Как выдать права на просмотр объекта через скрипт в бизнес-процессе ?
Есть БП, который создаёт объекты через
new Insert(userConnection).Into("UsrCards")
Нужно сразу после создания давать права на этот объект людям, у которых есть конкретная роль. Давать права через элемент БП Change access rights в нашем случае неудобно, поэтому надо через код. Пока вроде понял, что нужен UserConnection.DBSecurityEngine, но вот не пойму, где найти нужный мне метод для него.
Нравится
Пример раздачи прав через 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, там аналогичные операции доступны.