Gracias a la propiedad RoleAssignments de un ¡tem de cualquier lista, por ejemplo un documento en una librer¡a de documentos, podemos obtener que usuarios tienen permisos.
Esta propiedad nos devolver una colecci¢n de usuarios y/o grupos de usuarios. En el caso de devolvernos un grupo de usuario, recorremos este para obtener los usuarios que pertenezcan al grupo.
En el c¢digo de ejemplo, mandamos un email a todos los usuarios que tienen permiso sobre un elemento:
SPWeb web = properties.OpenWeb();
SPListItem item = properties.ListItem;
SPRoleAssignmentCollection AsignacionesRol = item.RoleAssignments;
for (int i = 0; i < AsignacionesRol.Count ; i++)
{
SPPrincipal principal = AsignacionesRol.Member;
if (principal.GetType().ToString() == "Microsoft.SharePoint.SPUser")
{
SPUser usuario = web.AllUsers[principal.ToString()];
SPUtility.SendEmail(web, true, true, usuario.Email, "asunto: ", "cuerpo");
}
else
if ( principal.GetType().ToString() == "Microsoft.SharePoint.SPGroup")
{
SPGroup grupo = web.Groups[principal.ToString()];
foreach (SPUser usuario in grupo.Users)
{
SPUtility.SendEmail(web, true, true, usuario.Email, "BLABLABLA: ", "blablabla");
}
}
}
En el c¢digo de ejemplo faltar¡a controlar cuando un usuario pertenece a 2 o m s grupos para no repetir la acci¢n m s de una vez (como mandar el mail de ejemplo repetidas veces).