Revoke – изъять права
Метод используется для изъятия прав доступа. Изменения сохраняются только после вызова метода Save() у сущности или прав доступа.
Отнятие прав Revoke() не следует путать с запретом прав. Если субъект входит в группу или роль, у которой есть права данного типа на объект, то отнятие этих прав у пользователя не лишит его доступа к объекту, т.к. пользователь наследует права группы (роли), в которую он входит. Чтобы запретить доступ к объекту, необходимо с помощью метода Grant() назначить пользователю запрещающие права.
Примечание. Метод Revoke() не работает для документов с включенным строгим доступом, если действие выполняется от пользователя:
•у которого нет полных прав на документ;
•входящего в роль «Служебные пользователи». При этом программный код выполняется на сервисе, и для документа включен усиленный строгий доступ;
•входящего в роль «Служебные пользователи», и у него нет полных прав на документ. При этом программный код выполняется не на сервисе.
В этой ситуации в лог-файл записывается информация, что права не могут быть выданы.
Синтаксис
C# |
public void Revoke(IRecipient recipient, params Guid[] accessRightsTypes); |
Параметры
recipient – субъект прав. Субъект – тот, кто выполняет действие. Например, пользователь, группа пользователей, роль;
accessRightsTypes – список типов прав. Базовые типы прав доступа можно получить с помощью класса DefaultAccessRightsTypes:
•Approve – утверждение;
•Change – изменение;
•Create – создание;
•Forbidden – доступ запрещен;
•FullAccess – полный доступ;
•Read – чтение.
Пример. Изъятие прав доступа
var responsible = _obj.State.Properties.ResponsibleEmployee.OriginalValue;
// Выдать ответственному права на изменение группы регистрации.
if (!Equals(responsible, _obj.ResponsibleEmployee))
{
if (_obj.ResponsibleEmployee != null)
_obj.AccessRights.Grant(_obj.ResponsibleEmployee, DefaultAccessRightsTypes.Change);
// Изъять права на изменение у предыдущего ответственного.
if (responsible != null)
_obj.AccessRights.Revoke(responsible, DefaultAccessRightsTypes.Change);
}
© Компания Directum, 2024 |