Пример #1
0
        public void AsignarPermisos(Web web, ListItem item, Principal grupo, RoleType roleType)
        {
            ClientContext clientContext = this.context;

            clientContext.Load(item, it => it.HasUniqueRoleAssignments);
            clientContext.ExecuteQuery();

            if (!item.HasUniqueRoleAssignments)
            {
                item.BreakRoleInheritance(false, false);
            }

            clientContext.Load(web);
            clientContext.ExecuteQuery();

            UserCollection users = web.SiteUsers;
            RoleDefinitionBindingCollection collRoleDefinitionBinding = new RoleDefinitionBindingCollection(web.Context);
            RoleDefinition roleDefinition = web.RoleDefinitions.GetByType(roleType);

            collRoleDefinitionBinding.Add(roleDefinition);

            item.RoleAssignments.Add(grupo, collRoleDefinitionBinding);


            clientContext.Load(item, it => it.RoleAssignments);
            clientContext.Load(users);
            clientContext.ExecuteQuery();

            bool existsysuser = false;

            foreach (RoleAssignment itemfe in item.RoleAssignments)
            {
                clientContext.Load(itemfe, it => it.Member);
                clientContext.Load(itemfe.Member, itm => itm.LoginName);
                clientContext.ExecuteQuery();
                if (itemfe.Member.LoginName.Equals("SHAREPOINT\\system"))
                {
                    existsysuser = true;
                }
            }

            if (existsysuser)
            {
                Principal      sysuser = users.GetByLoginName("SHAREPOINT\\system");
                RoleAssignment ra      = item.RoleAssignments.GetByPrincipal(sysuser);
                ra.DeleteObject();
            }
        }