public static SPDGRoleAssignment GetRoleAssignmentByPrincipal(SPSecurableObject securableObject, SPDGPrincipal principal)
{
SPPrincipal spPrincipal;
if (principal is SPDGServerUser)
{
spPrincipal = ((SPDGServerUser)principal).SPUser;
}
else
{
spPrincipal = ((SPDGServerGroup)principal).Group;
}
try
{
var spRoleAss = securableObject.RoleAssignments.GetAssignmentByPrincipal(spPrincipal);
return new SPDGServerRoleAssignment(spRoleAss, principal, spRoleAss.RoleDefinitionBindings.Cast<SPRoleDefinition>().Select(x => (SPDGRoleDefinition)new SPDGServerRoleDefinition(x)));
}
catch (Exception)
{
//ugly but will do
return null;
}
}