IsGrantedExtensions.CanReadByRole(SecurityStrategy, IPermissionPolicyRole, Object, String) Method
Checks whether the specified role allows reading the specified object or this object’s member.
Namespace: DevExpress.ExpressApp.Security
Assembly: DevExpress.ExpressApp.Security.v24.1.dll
NuGet Package: DevExpress.ExpressApp.Security
Declaration
Parameters
Name | Type | Description |
---|---|---|
security | SecurityStrategy | A SecurityStrategy object that specifies an application’s Security Strategy. |
targetRole | IPermissionPolicyRole | An IPermissionPolicyRole object that is a role this method checks. |
targetObject | Object | An Object this method checks. |
Optional Parameters
Name | Type | Default | Description |
---|---|---|---|
memberName | String | null | A String that is a name of the targetObject‘s member this method checks. This parameter is optional. |
Returns
Type | Description |
---|---|
Boolean | true, if the specified role allows reading the specified object or this object’s member; otherwise, false. |
Remarks
Important
This overload of the CanReadByRole
method may reduce performance and cause incorrect behavior in some usage scenarios. We recommend that you always use the CanReadByRole
method’s overloads that accept an Object Space as a parameter to check permissions for a specific object.
The following example shows how to use this method.
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Security;
using DevExpress.Persistent.Base;
using DevExpress.Persistent.BaseImpl.EF.PermissionPolicy;
using System;
// ...
public class CheckReadPermissionController : ObjectViewController<ListView, Contact> {
SecurityStrategy securityStrategy;
protected override void OnActivated() {
base.OnActivated();
securityStrategy = Application.GetSecurityStrategy();
View.CurrentObjectChanged += View_CurrentObjectChanged;
}
private void View_CurrentObjectChanged(object sender, EventArgs e) {
foreach (IPermissionPolicyRole role in ObjectSpace.GetObjects<PermissionPolicyRole>()) {
if (!securityStrategy.CanReadByRole(role, ViewCurrentObject.Department, nameof(Department.Office))) {
// ...
}
}
}
}