Como cambiar los permisos a nivel del Aplicación Web en SharePoint 2010

Existe un nivel de permisos de usuario que se pueden especificar a nivel de Aplicación Web o Web Application, que afecta a todas las Colecciones de Sitio que se encuentren ahí alojadas. Este nivel de permisos es muy útil, si quieres restringir los permisos a nivel global, como por ejemplo, si hablamos de los My Site personales de los empleados de una empresa, aquí os dejo una captura de pantalla para aclarar a que funcionalidad me refiero, dentro de la Administración Central…

Para poder realizar estos cambios de permisos usando el modelo de objetos, he creado dos funciones las cuales se basan en el uso de la propiedad SPWebApplication.RightsMask, una primera función DesactivarPermisos() en la cual de todos los posibles permisos se han comentado los permisos que deseamos desactivar. En la segunda función ActivarPermisos(), lo que hago es volver a activar todos los permisos.

//funcion para desactivar los permisos del WebApplication de My Site
private static void DesactivarPermisos(string WebAppUrl)
{
  try
  {
    SPSecurity.RunWithElevatedPrivileges(delegate()
    {
      //instancia el objeto WebApplication
      SPWebApplication webApp = SPWebApplication.Lookup(new Uri(WebAppUrl));
      //definie los permisos del obejto WebApplication
      webApp.RightsMask =
        //============ List Permissions ============
        //SPBasePermissions.ManageLists |
        SPBasePermissions.CancelCheckout |
        SPBasePermissions.AddListItems |
        SPBasePermissions.EditListItems |
        SPBasePermissions.DeleteListItems |
        SPBasePermissions.ViewListItems |
        SPBasePermissions.ApproveItems |
        SPBasePermissions.OpenItems |
        SPBasePermissions.ViewVersions |
        SPBasePermissions.DeleteVersions |
        SPBasePermissions.CreateAlerts |
        SPBasePermissions.ViewFormPages |
        //============ Site Permissions ============
        //SPBasePermissions.ManagePermissions |
        //SPBasePermissions.ViewUsageData |
        //SPBasePermissions.ManageSubwebs |
        //SPBasePermissions.ManageWeb |
        //SPBasePermissions.AddAndCustomizePages |
        //SPBasePermissions.ApplyThemeAndBorder |
        //SPBasePermissions.ApplyStyleSheets |
        //SPBasePermissions.CreateGroups |
        SPBasePermissions.BrowseDirectories |
        SPBasePermissions.CreateSSCSite |
        SPBasePermissions.ViewPages |
        SPBasePermissions.EnumeratePermissions |
        SPBasePermissions.BrowseUserInfo |
        //SPBasePermissions.ManageAlerts |
        //SPBasePermissions.UseRemoteAPIs |
        //SPBasePermissions.UseClientIntegration |
        SPBasePermissions.Open |
        SPBasePermissions.EditMyUserInfo |
        //============ Personal Permissions ============
        SPBasePermissions.ManagePersonalViews;
      //SPBasePermissions.AddDelPrivateWebParts |
      //SPBasePermissions.UpdatePersonalWebParts;
      webApp.Update();
      Console.WriteLine("Permisos desactivados correctamente para: " + WebAppUrl);
    });
  }
  catch (Exception ex) { Console.WriteLine(string.Format("***ERROR*** {0}|{1}", ex.ToString(), ex.StackTrace)); }
}

//funcion para activar los permisos del WebApplication de My Site
private static void ActivarPermisos(string WebAppUrl)
{
  try
  {
    SPSecurity.RunWithElevatedPrivileges(delegate()
    {
      //instancia el objeto WebApplication
      SPWebApplication webApp = SPWebApplication.Lookup(new Uri(WebAppUrl));
      //definie los permisos del obejto WebApplication
      webApp.RightsMask = SPBasePermissions.FullMask;
      webApp.Update();
      Console.WriteLine("Permisos activados correctamente para: " + WebAppUrl);
    });
  }
  catch (Exception ex) { Console.WriteLine(string.Format("***ERROR*** {0}|{1}", ex.ToString(), ex.StackTrace)); }
}

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *