SharePoint 2010: Permisos, niveles de permisos y dependencias (II)!

Siguiendo con la serie de artículos sobre permisos y niveles de permisos en SharePoint 2010, en esta ocasión quería dejaros constancia de como programáticamente podemos hacer exactamente lo mismo que se puede hacer en la interfaz de usuario. La clave de trabajar con permisos y niveles de permisos mediante el modelo de objetos reside en conocer los objetos correspondientes:

  • El objeto SPWeb y el miembro SiteGroups que nos permite añadir nuevos grupos a un sitio de SharePoint en concreto a través del método Add(). El miembro AssociatedGroups nos permitirá establecer la asociación entre el grupo creado y el sitio.
  • SPRoleAssignment para poder definir cuál es el nivel de permisos que le vamos a asociar al grupo que acabamos de crear. Para poder añadir un nivel de permisos (por ejemplo Read), necesitaremos utilizar SPRoleDefinition y vincularlo con el correspondiente SPRoleAssignment a través de RoleDefinitionBidings.
  • SPGroup para añadir un usuario (SPUser) al grupo creado.

A modo de ejemplo, os dejo como hacer una gestión de grupos u niveles de permisos mediante el modelo de objetos de servidor de SharePoint 2010:

   1: static void ManageGroupsRolesUsers(string sManagementOption)

   2: {

   3:     using (SPSite spssSitio=

   4:         new SPSite("http://demo2010a:100/"))

   5:     {

   6:         using (SPWeb spwWeb=spssSitio.OpenWeb())

   7:         {

   8:             switch (sManagementOption)

   9:             {

  10:                 case "Create":

  11:                     //Creación de un grupo

  12:                     SPMember spmMiembro= spwWeb.SiteAdministrators["contoso\Administrator"];

  13:                     spwWeb.SiteGroups.Add("CustomSPGroup", 

  14:                         spmMiembro,null, "Custom SharePoint Group");

  15:                     spwWeb.AssociatedGroups.Add(spwWeb.SiteGroups["CustomSPGroup"]);

  16:                     spwWeb.Update();

  17:  

  18:                     //Asignación de un nivel de permisos

  19:                     SPRoleAssignment sprAsignacionRol =

  20:                         new SPRoleAssignment(spwWeb.SiteGroups["CustomSPGroup"]);

  21:                     SPRoleDefinition sprdDefinicionRol =

  22:                         spwWeb.RoleDefinitions["Read"];

  23:                     sprAsignacionRol.RoleDefinitionBindings.Add(sprdDefinicionRol);

  24:                     spwWeb.RoleAssignments.Add(sprAsignacionRol);

  25:  

  26:                     //Asignación de un usuario

  27:                     SPUser spUsuario = 

  28:                         spwWeb.EnsureUser("contoso\Cesarg");

  29:                     if (spUsuario!=null)

  30:                     {

  31:                         SPGroup spGrupo =

  32:                             spwWeb.Groups["CustomSPGroup"];

  33:                         spGrupo.AddUser(spUsuario);

  34:                     }

  35:  

  36:                     break;

  37:                 case "Update":

  38:                     SPRoleAssignmentCollection sprColeccionRoles =

  39:                         spwWeb.RoleAssignments;

  40:                     

  41:                     foreach (SPRoleAssignment sprAsignacionR in sprColeccionRoles)

  42:                     {

  43:                         if (sprAsignacionR.Member.Name=="CustomSPGroup")

  44:                         {

  45:                             SPRoleDefinitionBindingCollection sprdcRoleDefinitionCollection =

  46:                                 sprAsignacionR.RoleDefinitionBindings;

  47:                             foreach (SPRoleDefinition sprd in sprdcRoleDefinitionCollection)

  48:                             {

  49:                                 if (sprd.Name=="Read")

  50:                                 {

  51:                                     sprdcRoleDefinitionCollection.Remove(sprd);

  52:                                     break;

  53:                                 }                                        

  54:                             }                                   

  55:  

  56:                             //Añadimos una nueva definición

  57:                             SPRoleDefinition sprNewDefinionRol =

  58:                                 spwWeb.RoleDefinitions["Contribute"];

  59:                             sprAsignacionR.RoleDefinitionBindings.Add(sprNewDefinionRol);

  60:                             //Actualizamos todo

  61:                             sprAsignacionR.Update();

  62:                             spwWeb.Update();

  63:                         }

  64:                     }

  65:                     break;

  66:                 case "Delete":

  67:                                                 

  68:                     spwWeb.SiteGroups.Remove("CustomSPGroup");

  69:                     spwWeb.Update();

  70:                     break;

  71:                 default:

  72:                     break;

  73:             }

  74:         }

  75:     }

  76: }

Publicado por

Juan Carlos González

Juan Carlos es Ingeniero de Telecomunicaciones por la Universidad de Valladolid y Diplomado en Ciencias Empresariales por la Universidad Oberta de Catalunya (UOC). Cuenta con más de 12 años de experiencia en tecnologías y plataformas de Microsoft diversas (SQL Server, Visual Studio, .NET Framework, etc.), aunque su trabajo diario gira en torno a SharePoint & Office 365. Juan Carlos es MVP de Office Servers & Services desde 2015 (anteriormente fue reconocido por Microsoft como MVP de Office 365 y MVP de SharePoint Server desde 2008 hasta 2015), coordinador del grupo de usuarios .NET de Cantabria (Nuberos.Net, www.nuberos.es), co-fundador y coordinador del Grupo de Usuarios de SharePoint de España (SUGES, www.suges.es), así como co-director de la revista gratuita en castellano sobre SharePoint CompartiMOSS (www.compartimoss.com). Hasta la fecha, ha publicado 8 libros sobre SharePoint & Office 365 y varios artículos en castellano y en inglés sobre ambas plataformas.

Un comentario en “SharePoint 2010: Permisos, niveles de permisos y dependencias (II)!”

Deja un comentario

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