Hi all,
I was using RetrievePrincipalAccessRequest and RetrievePrincipalAccessResponse objects to retreive user access rights on entity using entity instances. This worked until thus far when I tried to retreive access rights on custom entity.
I get the following error "The 'RetrievePrincipalAccess' method does not support entities of type 'my_entity'.
Below is the code that I am using to retreive user access rights on entities.
protected internal static AccessRights? GetUserAccessRights(string entityName, string UserName, out Guid? UserId)
{
// Instantiate the service object
OrganizationService service = new OrganizationService("MY_ORG");
// Instantiate the context object
PRMServiceContext context = new PRMServiceContext(service);
if (entityName != null && !String.IsNullOrEmpty(entityName) && !String.IsNullOrEmpty(UserName))
{
try
{
// Get the owner id of the user
var userId = (from su in context.CreateQuery<SystemUser>()
join sur in context.CreateQuery<SystemUserRoles>()
on su.SystemUserId equals sur.SystemUserId
where su.DomainName == UserName
select su.SystemUserId).FirstOrDefault();
Guid? instanceId = null;
switch (entityName)
{
case "contact":
instanceId =
(
from c in context.CreateQuery<Contact>()
where c.Id != null
select c.Id
).Take(1).First();
break;
case "phonecall":
instanceId =
(
from c in context.CreateQuery<PhoneCall>()
where c.Id != null
select c.Id
).Take(1).First();
break;
case "my_entity":
instanceId =
(
from c in context.CreateQuery<my_entity>()
where c.Id != null
select c.Id
).Take(1).First();
break;
}
if (userId != null && instanceId != null)
{
RetrievePrincipalAccessRequest req = new RetrievePrincipalAccessRequest();
//specify team or systemuser you want to get privileges for
req.Principal = new EntityReference("systemuser", userId.Value);
//specify the CRM record you want to check principal permissions for (can be any entity type)
req.Target = new EntityReference(entityName, (Guid)instanceId);
RetrievePrincipalAccessResponse resp = (RetrievePrincipalAccessResponse)context.Execute(req);
context.ClearChanges();
ParameterCollection pc = resp.Results;
UserId = userId;
return resp.AccessRights;
}
}
catch (Exception ex)
{
throw ex;
}
}
UserId = null;
return null;
}
Please help. Thanks.
Add your 2¢