Saturday, April 25, 2009

Sharepoint List … Programáticamente

Hola de nuevo, y esta vez quiero mostrar un sencillo ejemplo de cómo podemos guardar información en una lista previamente configurada en Sharepoint.

Suponiendo que tenemos una página aspx en la cual programamos una interfaz adecuada para ingresar los valores y posteriormente guardarlos en la lista, el código de ejemplo quedaría de la siguiente forma:

Protected Sub btnGuardar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnGuardar.Click
        SPSecurity.RunWithElevatedPrivileges(AddressOf Guardar)
    End Sub

    Private Sub Guardar()
        Dim objSitio As SPSite = New SPSite(ConfigurationManager.AppSettings("MiSitio"))
        Using objWeb As SPWeb = objSitio.OpenWeb()
            objWeb.AllowUnsafeUpdates = True
            Dim objLista As SPList = objWeb.Lists("MiLista")
            Dim objItem As SPListItem = objLista.Items.Add()
            objItem("Campo 1") = "xxxx"
            objItem("Campo 2") = "yyyy"
            objItem.Update()
            objWeb.AllowUnsafeUpdates = False
        End Using

    End Sub

Lo primero y más importante es la llamada al método:

SPSecurity.RunWithElevatedPrivileges(AddressOf Guardar)
Con lo anterior aseguramos que un usuario que ha iniciado sesión en el sitio de Sharepoint pueda ejecutar la acción.

Ya en el método Guardar(), se supone que ya existe un sitio llamado MiSitio, con una lista en ese sitio llamada MiLista la cual tiene una serie de campos, Campo 1 y 2. Eso obviamente lo deben cambiar a sus valores reales.

Lo realmente importante es la llamada a la propiedad AllowUnsafeUpdates con el valor true, lo cual le dice a la Lista que debe quedar hábilitada para permitir la actualización cuando se invoca el método  Update().

Lo anterior, que conste que lo escribo en letra roja, es practicamente una impersonación, así que hasta el más razo de los usuarios (read only) podrá hacer una actualización sobre esa lista. Por lo tanto miren la llamada nuevamente a AllowUnsafeUpdates pero esta vez asignado a False, porque puede ser un hueco de seguridad lo anterior. Además si ustedes quieren que la actualización la pueda ejecutar únicamente un usuario con mayores privilegios pues es cuestión de adicionar código que valide el grupo o algo por el estílo que verifique los permisos de dicho usuario, ya que lo anterior lo puede ejecutar cualquiera.

Felíz Update.

No comments: