Manejo de usuarios programáticamente en Sharepoint 2010


Para esta nueva entrada me gustaría enseñaros algunos aspectos del tratamiento de usuarios en SharePoint 2010 usando C#.

Vamos a hacer varias operaciones con usuarios dentro de SharePoint para los que vamos a utilizar la clase básica SPUser que se encuentra referenciada en Microsoft.SharePoint.UserCode. En el código que veremos a continuación vamos a ver como podemos:

  • Obtener el listado de los usuarios pertenecientes a un determinado grupo dentro de un sitio de SharePoint.
  • Actualizar columnas de tipo Usuario o Grupo en un item determinado de esa lista.
Se trata de un ejemplo muy sencillo y que muestra solo un primer paso dentro del manejo de usuarios de forma programática con C#. Como acostumbro habitualmente mostraré el código completo y después analizaré los aspectos más importantes de ese código explicando aquellos aspectos que considere oportunos.
using (SPSite site = new SPSite(context.CurrentWebUrl))
{
     using (SPWeb web = site.OpenWeb())
     {
           //Obtenemos el item de la lista actual, para ello se obtiene la lista actual a partir de su Id y despues se accede al item
           SPList list = web.Lists["ejemplo"];
           SPListItem listItem = list.GetItemById(0);

           //Cargamos el grupo deseado de los existentes en el sitio actual
           SPGroup spgroup = web.SiteGroups["Siniestros"];

           //Obtenemos todos los usuarios que pertenecen al grupo
           var Grupo = from SPUser g in spgroup.Users
                       select g;

           //Recorremos todos los usuarios
           foreach (var g in Grupo)
           {
                //Comprobamos si el usuario analizado tiene menos carga de trabajo que los analizados anteriormente
                if(g.LoginName != @"SHAREPOINT\system")
                {
                     selected = web.AllUsers[g.LoginName.ToString()];
                }
           }

           //Habilitamos la actualización del sitio y actualizamos el valor correspondiente con el usuario calculado
           site.AllowUnsafeUpdates = true;
           web.AllowUnsafeUpdates = true;

           listItem["columnaEjemplo"] = selected;
           listItem.Update();
           list.Update();

           site.AllowUnsafeUpdates = false;
           web.AllowUnsafeUpdates = false;
    }
}
Vamos ahora a hacer un repaso por los elementos más importantes del código que hemos mostrado anteriormente:
  • Las primeras líneas del código nos van a permitir cargar un determinado sitio dentro de nuestra aplicación a partir del cual vamos a poder acceder a sus listas y todos los elementos propios del sitio al que hagamos referencia.
  • Las líneas 6 y 7 del código son las que se utilizan para acceder a un elemento de una lista dada. La primera línea carga una lista “ejemplo” creada en nuestro sitio y utiliza la siguiente línea para cargar el Item de la lista con el ID=0. De esta manera podremos cargar cualquier elemento de una lista que forme parte del sitio.
  • A continuación encontramos las líneas que nos muestran como acceder a los miembros de un grupo que forma parte del sitio que cargamos anteriormente. Para ello se usa el miembro SiteGroups de la clase SPWeb  e indicamos entre corchetes el nombre del grupo cuyos miembros queremos obtener, tal y como podemos ver en la línea 10 del código.
  • Posteriormente vamos a almacenar los miembros de la clase SPGroup en un vector de usuario del tipo SPUser, de esa forma podremos acceder a todos los usuarios que forman parte de ese grupo y trabajar con ellos.
  • Por último vamos a ver como se puede actualizar un campo de tipo Usuarios y Grupos programáticamente. Para ello tenemos en la lista que hemos creado una columna llamada columnaEjemplo. Para actualizar dicha columna creamos una variable auxiliar de tipo SPUser. A esa variable le vamos a asignar un valor tal y como hacemos en la línea 22 de código. Accedemos al miembro AllUsers de la clase SPWeb e indicamos el nombre del usuario entre los corchetes para obtener el valor que deseamos. Posteriormente vamos a utilizar esa variable auxiliar del tipo SPUser para actualizar el valor de la columna deseada y con el código de las líneas 31 y32 haremos efectiva dicha actualización.
Si bien la utilidad de este código de ejemplo no es mucha, el objetivo era que nos sirviera para ver como trabajar con columnas de tipo UUsuarios y que inicialmente me dio algunos problemas. Como siempre espero que los aspectos que he destacado os sirvan al menos en algún caso en que necesitéis acceder a los usuarios de un determinado grupo en un sitio de SharePoint o actualizar columnas de tipo usuario.
Un saludo y hasta la próxima.
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s