<< Click to Display Table of Contents >> Объектная модель > Действия с репозиториями и сущностями > AccessRights, AccessRightsTypes – права доступа > AccessRights – права доступа CanRead – проверить возможность выполнения операции «Чтение» |
Метод используется для проверки, может ли текущий пользователь или субъект прав выполнить операцию «Чтение».
Перегрузки
CanRead() |
Проверить возможность выполнения операции «Чтение» для текущего пользователя |
CanRead(IRecipient recipient) |
Проверить возможность выполнения операции «Чтение» для субъекта прав |
Синтаксис
C# |
public bool CanRead(); public bool CanRead(IRecipient recipient); |
Параметры
recipient – субъект прав. Субъект – тот, кто выполняет действие. Например, пользователь, группа пользователей, роль.
Возвращаемое значение
True, если операция разрешена, иначе – false.
Пример 1. Выдача прав на чтение документа в событии «После сохранения» типа документа
// Выдать права на документ сотруднику, указанному в поле
// «Ответственный» (Responsible) карточки документа.
public override void AfterSave(Sungero.Domain.AfterSaveEventArgs e)
{
// Проверить, есть ли у сотрудника права на чтение документа.
if (!_obj.AccessRights.CanRead(_obj.Responsible)) // с учетом вхождения в группы.
// Если нет – выдать права.
_obj.AccessRights.Grant(_obj.Responsible, DefaultAccessRightsTypes.Read);
}
В примере предполагается, что _obj.Responsible содержит ссылку на запись справочника «Сотрудники» (Employee). В качестве параметра метода можно указать объект, реализующий интерфейс IRecipient: User, Group, Role и их наследников, например, Employee или Department.
Пример 2. Выдача прав на документ-вложение исполнителю задачи
if (!document.AccessRights.CanRead(task.Performer))
document.AccessRights.Grant(_obj.Responsible, DefaultAccessRightsTypes.Read);
Пример 3. Получение номера ведущего документа
/// <summary>
/// Получить номер ведущего документа.
/// </summary>
/// <returns>Номер документа либо пустая строка.</returns>
public override string GetLeadDocumentNumber()
{
if (_obj.LeadingDocument != null)
{
return _obj.LeadingDocument.AccessRights.CanRead() ?
_obj.LeadingDocument.RegistrationNumber :
Contracts.PublicFunctions.ContractualDocument.Remote.GetRegistrationNumberIgnoreAccessRights(_obj.LeadingDocument.Id);
}
return string.Empty;
}
© Компания Directum, 2024 |