Добавление/удаление прав на документ в сценарии
Примеры сценариев с использованием PublicAPI
Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарии, указанные ниже, актуальны для версий системы ELMA до 3.12.1 включительно.
Пример сценария для добавления полных прав доступа к документу определенному пользователю
Контекстные переменные:
- context.Document - переменная типа Документ;
- context.Poljzovatelj - переменная типа Пользователь.
Подключить пространство имен:
using EleWise.ELMA.API;Текст сценария:
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
Нужно объявить пространство имен:
using EleWise.ELMA.Documents.Models; using EleWise.ELMA.Security; using EleWise.ELMA.Services; using NHibernate.Bytecode;Текст сценария:
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();
Пример сценария для удаления прав доступа к документу у определенного пользователя
Сборки и пространства имен те же, что приведены выше.
Текст сценария:
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();
}