« - »

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

Domingo, 30 de diciembre de 2007

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[i].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).


Dejar una respuesta

Dark traducido por Reproduccion Asistida Inspirado en: Bloggerlounge & Arquitectura