SharePoint Online: Como permitir que usuarios anónimos escriban en una lista que requiere autenticación!

Cuando nos encontramos con la necesidad de qué usuarios anónimos puedan escribir datos en una lista de  SharePoint Online, tenemos que recurrir a un pequeño desarrollo que haga posible esto teniendo en cuenta que no es posible hacer elevación de privilegios:

  • En VS 11 Beta, creamos un proyecto de tipo SharePoint 2010 Project.
  • Elegimos como tipo de despliegue “Deploy as a sandboxed solution”.
  • Añadimos una característica al proyecto que configuramos de acuerdo a nuestras necesidades. Añadimos un Feature Event Receiver a la feature.
image image image
  • Codificamos el manejador para el evento FeatureActivated() de forma que configuremos el acceso anónimo a una lista. Lo que tenemos que hacer por una parte romper la herencia de permisos de la lista con respecto al sitio principal para a continuación especificar la secuencia de permisos a aplicar par el caso de acceso anónimo (propiedad AonymousPermMask64).
   1: SPWeb web = properties.Feature.Parent as SPWeb;

   2: SPList list = web.Lists["Productos"];

   3: // Chequear si tiene permisos unicos

   4: if (!list.HasUniqueRoleAssignments)

   5: {

   6:     list.BreakRoleInheritance(true);

   7:     //Aseguramos que cada uno pueda editar sus propios items

   8:     list.WriteSecurity = 2;

   9:  

  10:     // Concedemos permisos a usuarios anonimos

  11:     list.AnonymousPermMask64 =

  12:         (SPBasePermissions.Open |

  13:          SPBasePermissions.OpenItems |

  14:          SPBasePermissions.ViewFormPages |

  15:          SPBasePermissions.ViewListItems |

  16:          SPBasePermissions.AddListItems);

  17:  

  18:     list.Update();

  19: }

  • Lo siguiente simplemente es desplegar la solución Sandbox en SharePoint Online, proceso que con VS 11 Beta se simplifica.
  • Activamos la solución en la galería de soluciones Sandbox del sitio.
  • Activamos la correspondiente característica.
image image image
  • Comprobamos que efectivamente la rotura de permisos se ha realizado a través de las opciones de administración de la lista y en concreto la relativa a la gestión de permisos. Vemos como además los usuarios anónimos aparecen con permisos en la lista.
  • Finalmente, simplemente navegamos a la lista de forma anónima y comprobamos que podemos interactuar con ella.
image image
  • Por supuesto, cuando se desactive la característica deberíamos deshacer la rotura de permisos de forma que la lista vuelva a heredarlos. Para ello codificamos el manejador de FeatureDeactivating() de la siguiente forma:
   1: public override void FeatureDeactivating(SPFeatureReceiverProperties properties)

   2: {

   3:     SPWeb web = properties.Feature.Parent as SPWeb;

   4:     SPList list = web.Lists["Productos"];

   5:     // Chequear si tiene permisos unicos

   6:     if (list.HasUniqueRoleAssignments)

   7:     {

   8:         list.ResetRoleInheritance();

   9:         list.Update();

  10:     }

  11: }

Deja un comentario

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