viernes, 23 de febrero de 2007

Agregar integrantes a un sitio de SharePoint


Como complemento a Creación de Sitios de SharePoint con C#, publicado unas entradas más abajo, expondré ahora como agregar integrantes a los sitios de SharePoint desde nuestro código, lo que puede ser muy útil para dejar configurado por completo un sitio desde nuestra aplicación.

Para agregar un integrante necesitamos la ruta del sitio en cuestión y que la persona que queremos agregar ya sea usuario de nuestro SharePoint. La ruta que hace falta para la implementación que expondré es relativa al servidor (si el sitio es “http://spserver/sites/proyectos/” la ruta que nos hace falta es solo “/sites/proyectos/”). El usuario que le vamos a pasar al método debe tener el formato “DOMINIO\nombre_usuario”, así lo podremos obtener la colección de usuarios de SharePoint sin problemas.

Para agregar uno o varios integrantes hay que introducir los datos en un vector SPUserInfo (correo electrónico, nombre de usuario y nombre para mostrar) y será dicho vector el que añadamos a la colección de usuarios. También tendremos que decidir que rol le otorgaremos a los usuarios que agreguemos ya que si no agregamos los usuarios también al rol no llegarán a formar parte del sitio.

El método que a continuación se expone es para agregar un solo usuario:

private bool agregarIntegrante(string ruta, string usuario)
{
  try
  {

/* Obtenemos la colección de sitios de nuestro portal
* y el sitio especificado por 'ruta' */

    SPGlobalAdmin ga = new SPGlobalAdmin();
    SPSiteCollection col = ga.VirtualServers[0].Sites;
    SPSite s = col[ruta];

    s.AllowUnsafeUpdates = true;

/* Obtenemos la colección de usuarios del sitio
* y creamos el rol que tendrán los nuevos integrantes
* en este caso el rol es de Administrador */

    SPWeb w = s.OpenWeb();
    SPUserCollection ucoll = w.SiteUsers;
    SPRole rol = w.Roles["Administrador"];

/* Obtenemos al usuario que queremos agregar como integrante
* del portal principal, creamos el vector de SPUserInfo
* y agregamos los datos del usuario */

    SPUser u = col[0].OpenWeb().Users[usuario];
    SPUserInfo[] ui = new SPUserInfo[1];

    ui[0].Email = u.Email;
    ui[0].LoginName = u.LoginName;
    ui[0].Name = u.Name;

/* Agregamos el vector SPUserInfo a la colección de usuarios
* y al usuario en concreto en el rol especificado anteriormente */

    ucoll.AddCollection(ui);
    rol.AddUser(u.LoginName, u.Email, u.Name, u.Notes);

    return true;
  }
  catch(Exception ex)
  {
    return false;
  }
}



Como también dije con la creación de sitios, agregar integrantes desde nuestro código puede ser muy interesante si lo aplicamos a un flujo de trabajo y muchísimo más interesante si combinamos la creación de sitios con el método para agregar integrantes.

No hay comentarios: