Fragmentos de código: Obtener usuarios con permiso sobre un elemento

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 = AsignacionesRolIdea.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).

Leave a Reply