Check user security role in Plug-ins CRM 2011
Hi,
Below is the code snippet to check current user security role in Plug-in.
private void CheckUserRole(IOrganizationService service, Guid userID)
{
QueryExpression query = new QueryExpression();
query.EntityName = “role”; //role entity name
ColumnSet cols = new ColumnSet();
cols.AddColumn(“name”); //We only need role name
query.ColumnSet = cols;
ConditionExpression ce = new ConditionExpression();
ce.AttributeName = “systemuserid”;
ce.Operator = ConditionOperator.Equal;
ce.Values.Add(userID);
//system roles
LinkEntity linkRole = new LinkEntity();
linkRole.LinkFromAttributeName = “roleid”;
linkRole.LinkFromEntityName = “role”; //FROM
linkRole.LinkToEntityName = “systemuserroles”;
linkRole.LinkToAttributeName = “roleid”;
//system users
LinkEntity linkSystemusers = new LinkEntity();
linkSystemusers.LinkFromEntityName = “systemuserroles”;
linkSystemusers.LinkFromAttributeName = “systemuserid”;
linkSystemusers.LinkToEntityName = “systemuser”;
linkSystemusers.LinkToAttributeName = “systemuserid”;
linkSystemusers.LinkCriteria =new FilterExpression();
linkSystemusers.LinkCriteria.Conditions.Add(ce);
linkRole.LinkEntities.Add(linkSystemusers);
query.LinkEntities.Add(linkRole);
EntityCollection collRoles = service.RetrieveMultiple(query);
if (collRoles != null && collRoles.Entities.Count > 0) {
foreach (Entity _entity in collRoles.Entities) {
if (_entity.Attributes[“name”].ToString().ToLower() == “{Your rolename}”) {
}
}
}
}
How do I call this method :-
public void Execute(IServiceProvider serviceProvider)
{
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = factory.CreateOrganizationService(context.UserId);
CheckUserRoles(service, context.UserId);
}
Hope it helps 🙂