logo

Добавление/удаление прав на документ в сценарии

Примеры сценариев с использованием 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.Docflow.Document.DeletePermissions(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();
        }