web
You’re offline. This is a read only version of the page.
close
Skip to main content
Community site session details

Community site session details

Session Id :
Dynamics 365 Community / Blogs / CRM Memories / Retrieve All Privileges for...

Retrieve All Privileges for a Security Role in C#

camelCaseDave Profile Picture camelCaseDave 5

To retrieve all privileges for a security role, use RetrieveRolePrivilegesRoleRequest.

var roleRequest = new RetrieveRolePrivilegesRoleRequest { RoleId = new Guid("securityRoleId") };
var roleReponse = service.Execute(roleRequest);

Replace securityRoleId with the ID of the security role you want to query and service with your IOrganizationService.

roleResponse.RolePrivileges will contain a long list of privilege IDs which are not very useful on their own. You can get the name of all of these privileges like this:

var privilegeQuery = new QueryExpression { EntityName = "privilege", ColumnSet = new ColumnSet(true) };

var filter = new FilterExpression(LogicalOperator.Or);

foreach (var p in roleResponse.RolePrivileges)            
    filter.AddCondition("privilegeid", ConditionOperator.Equal, p.PrivilegeId);

privilegeQuery.Criteria = filter;

var privileges = service.RetrieveMultiple(privilegeQuery);

Now you will have all columns (attributes) for all privileges for a given security role stored in privileges

To go one step further, you can filter your privileges by the entity they refer to like so:

var contactPrivileges = privileges.Entities.ToList()
            .Where(p => p.GetAttributeValue<string>("name").ToLower()
            .Contains("contact"))
            .ToList();

This was originally posted here.

Comments

*This post is locked for comments