Не проверенный код, но что-то вроде этого.
Это работает как для групп, так и для пользователей, а также для всего с разрешениями (элементы, списки, сети и т. Д.)
public static bool DoesPrincipalHavePermission(ISecurableObject @object, SPPrincipal principal, SPRoleDefinition role)
{
var assignment = @object.RoleAssignments.GetAssignmentByPrincipal(principal);
if (assignment == null || assignment.RoleDefinitionBindings.Count < 1)
return false;
foreach (SPRoleDefinition r in assignment.RoleDefinitionBindings)
{
if (r.BasePermissions == role.BasePermissions)
return true;
}
return false;
}