Добавление/удаление прав на документ в сценарии
Примеры сценариев с использованием PublicAPI
Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарии, указанные ниже, актуальны для версий системы ELMA до 3.12.1 включительно.
Пример сценария для добавления полных прав доступа к документу определенному пользователю
Контекстные переменные:
- context.Document - переменная типа Документ;
- context.Poljzovatelj - переменная типа Пользователь.
1 | using EleWise.ELMA.API; |
1 2 3 4 | PublicAPI.Docflow.Document.AddViewPermission(context.Document, context.Poljzovatelj); //Права на просмотр/загрузку PublicAPI.Docflow.Document.AddEditPermission(context.Document, context.Poljzovatelj); //Права на редактирование PublicAPI.Docflow.Document.AddManageAccessPermission(context.Document, context.Poljzovatelj); //Права на выдачу прав PublicAPI.Docflow.Document.AddFullAccessPermission(context.Document, context.Poljzovatelj); //Полный доступ |
Пример сценария для удаления прав доступа к документу у определенного пользователя
Контекстные переменные и пространства имен те же, что приведены выше.
Текст сценария:
Примеры сценариев без использования PublicAPI
Пример сценария для добавления полных прав доступа к документу определенному пользователю
В сценарии используются переменные:
- Документ - тип объект Документ;
- Пользователь - тип объект Пользователь.
Необходимо подключить сборки:
EleWise.ELMA.Documents
EleWise.ELMA.Documents.Docflow
Нужно объявить пространство имен:
1 2 3 4 | using EleWise.ELMA.Documents.Models; using EleWise.ELMA.Security; using EleWise.ELMA.Services; using NHibernate.Bytecode; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | context.Document.Permissions.Add( new InstanceOf<DmsObjectPermission> { New = { DmsObject = context.Document, PermissionId = EleWise.ELMA.Documents.PermissionProvider.DocumentViewPermission.Id, // - Права на просмотр TypeRoleId = CommonRoleTypes.User.Id, Assigned = context.Poljzovatelj } }.New); context.Document.Permissions.Add( new InstanceOf<DmsObjectPermission> { New = { DmsObject = context.Document, PermissionId = EleWise.ELMA.Documents.PermissionProvider.DocumentEditPermission.Id, // - Права на редактирование TypeRoleId = CommonRoleTypes.User.Id, Assigned = context.Poljzovatelj } }.New); context.Document.Permissions.Add( new InstanceOf<DmsObjectPermission> { New = { DmsObject = context.Document, PermissionId = EleWise.ELMA.Documents.PermissionProvider.DocumentManagerAccessPermission.Id, // - Выдача прав TypeRoleId = CommonRoleTypes.User.Id, Assigned = context.Poljzovatelj } }.New); context.Document.Permissions.Add( new InstanceOf<DmsObjectPermission> { New = { DmsObject = context.Document, PermissionId = EleWise.ELMA.Documents.PermissionProvider.DocumentFullAccessPermission.Id, // - Полные права TypeRoleId = CommonRoleTypes.User.Id, Assigned = context.Poljzovatelj } }.New); context.Document.Save(); |
Пример сценария для удаления прав доступа к документу у определенного пользователя
Сборки и пространства имен те же, что приведены выше.
Текст сценария:
1 2 3 4 5 | var item = context.Document.Permissions.ToList().FindAll(p => p.User == (User)UserManager.Instance.LoadByLogin( "admin" )); // получаем права на документ у пользователя admin if (item != null ) { context.Document.Permissions.RemoveAll(item); //удаляем все права context.Document.Save(); } |