Если у пользователя нет прав на редактирование карточки объекта (Счета), можно ли через программный код дать право на редактирование одного поля в данном объекте?
Добрый день
Если у пользователя нет прав на редактирование карточки объекта (Счета), можно ли через программный код дать право на редактирование одного поля в данном объекте? Реализация через код кажется оптимальной , т.к. настройка прав через доступ по колонкам в данном сценарии требуется все таки дать пользователю права на редактирование счета, но прописать в блоке "Доступ по колонкам", что на все поля, кроме одного у данного пользователя право только на просмотр.
Нравится
Добрый день.
Изменять права можно при помощи класса DBSecurityEngine. Пример раздачи прав на колонку:
UserConnection.DBSecurityEngine.SetEntitySchemaColumnRightLevel(adminUnitId, schemaName, columnName, Core.Configuration.EntitySchemaColumnRightLevel.CanEdit);
adminUnitId - Guid пользователя либо группы которой выдаются права.
schemaName - название объекта на который выдаются права.
columnName - название колонки.
EntitySchemaColumnRightLevel - Enum с уровнями прав.
Также для изменения прав на колонки объект обязательно должен администрироваться по колонкам.
Если же имеется ввиду изменение прав через JavaScript то это невозможно в целях безопасности, однако выше кидали ссылку как можно блокировать поля на стороне UI через код js.
Добрый день.
Изменять права можно при помощи класса DBSecurityEngine. Пример раздачи прав на колонку:
UserConnection.DBSecurityEngine.SetEntitySchemaColumnRightLevel(adminUnitId, schemaName, columnName, Core.Configuration.EntitySchemaColumnRightLevel.CanEdit);
adminUnitId - Guid пользователя либо группы которой выдаются права.
schemaName - название объекта на который выдаются права.
columnName - название колонки.
EntitySchemaColumnRightLevel - Enum с уровнями прав.
Также для изменения прав на колонки объект обязательно должен администрироваться по колонкам.
Если же имеется ввиду изменение прав через JavaScript то это невозможно в целях безопасности, однако выше кидали ссылку как можно блокировать поля на стороне UI через код js.
n.isaev,
schemaName - название объекта на который выдаются права.
указывать название объектfаили схемы?
вот мой код
Guid adminUnitId = new Guid("c3a4d114-c704-4e1c-ba4c-3f2a9fded1b3"); string schemaName = "Opportunity"; string columnName = "Title"; UserConnection.DBSecurityEngine.SetEntitySchemaColumnRightLevel(adminUnitId, schemaName, columnName, Core.Configuration.EntitySchemaColumnRightLevel.CanEdit); return true;
по трейсу он какбудто не может получить id схемы
System.NullReferenceException: Object reference not set to an instance of an object.
at Terrasoft.Core.DB.DBSecurityEngine.GetEntitySchemaName(Guid schemaUId)
at Terrasoft.Core.DB.DBSecurityEngine.SetEntitySchemaColumnRightLevel(Guid adminUnitId, Guid schemaUId, Guid columnUId, EntitySchemaColumnRightLevel rightLevel, Nullable`1 position)
at Terrasoft.Core.DB.DBSecurityEngine.SetEntitySchemaColumnRightLevel(Guid adminUnitId, String schemaName, String columnName, EntitySchemaColumnRightLevel rightLevel)
Также для изменения прав на колонки объект обязательно должен администрироваться по колонкам.
я включил в объекте администрирование по колонкам, но это не особо помогло(