Muchas veces es necesario cuando se desarrolla un componente tener que romper la herencia de permisos y tener que tomar los usuarios desde algún campo de personas de SharePoint (person field) para romper la herencia de permisos y poder crear una nueva herencia podemos crear o usar un método que usaremos en nuestro proceso.

En el caso del siguiente metodo tenemos varios parametros los cuales debemos tener definidos como:

  • Sitio donde romperemos los permisos.
  • Nombre del grupo
  • Usuario por defecto
  • Usuario o grupo de usuarios que pertenecerán al grupo del sitio.
public void rompe(SPWeb web, string groupName, string user , string author)
        {
            web.RoleDefinitions.BreakInheritance(false, false);
            web.AllowUnsafeUpdates = true;
            web.SiteGroups.Add(groupName, web.CurrentUser, web.CurrentUser, string.Empty);
            SPGroup group = web.SiteGroups[groupName];
            SPRoleDefinition roleDefinition = web.RoleDefinitions.GetByType(SPRoleType.Contributor);
            SPRoleAssignment roleAssigment = new SPRoleAssignment(group);
            roleAssigment.RoleDefinitionBindings.Add(roleDefinition);
            web.RoleAssignments.Add(roleAssigment);
            web.Update();
            try
            {
                SPUser useraut = web.EnsureUser(After(author ,";#"));
                group.Users.Add(useraut.LoginName, string.Empty, useraut.Name, string.Empty);
            }
            catch
            {

            }
            string[] users = Regex.Split(user, ";#");
            foreach (string user in users)
            {
                try
                {
                    SPUser spUser = web.EnsureUser(user);
                    group.Users.Add(spUser.LoginName, string.Empty, spUser.Name, string.Empty);

                }
                catch (Exception ex)
                {
                    continue;
                }
            }

            web.AllowUnsafeUpdates = false;

        }

 

Es así como fácilmente con un método es posible romper la herencia de permisos dentro de SharePoint.