none
Permissão para listas através dos webservices RRS feed

  • Pergunta

  • Pessoal

    Estou criando uma customização para o SharePOint onde tenho que fazer o seguinte itens:

    1) recuperar todas as listas de um site

    2) para cadas lista conceder algumas permisões

    o item 1 ja está OK porém como posso adicionar grupos (ad) nas permissões dessas listas??

    Fico no aguardo!


    -----------------------
    www.leandroprado.com.br
    sexta-feira, 21 de outubro de 2011 19:13

Respostas

Todas as Respostas

  • Leandro,

    Você pode criar um método semelhante a esse:

    private void SetListPermissions(SPWeb site, string listName, List<string> roleNames)
    {
        SPList siteList = site.Lists[listName];
        siteList.BreakRoleInheritance(true);
        
        for (int i = siteList.RoleAssignments.Count - 1; i >= 0; i--)
        {
            if (roleNames.IndexOf(siteList.RoleAssignments[i].Member.Name) == -1)
                siteList.RoleAssignments.Remove(i);
        }            
        siteList.Update();
    }
    

    e você pode chamar este método da seguinte maneira:

    using (SPSite siteCollection = new SPSite(siteCollectionUrl))
    {
        using (SPWeb parentWeb = siteCollection.OpenWeb())
        {
                SPWeb site = parentWeb.Webs["MySiteName"];
                
                List<string> principals = new List<string>(new string[] { "My Intranet Owners", "My Management Team", "System Account" });
                SetListPermissions(site, "Commercial Documents", principals);
            }
        }
    }
    

    Abraços

     


    Gabriel José A. Nóvoa - MCP/MCDST/MCSA/MCTS/MCITP/MCAS/MCPD
    www.gabrielnovoa.com.br
    www.doneit.com.br
    sexta-feira, 21 de outubro de 2011 19:54
  • Ola Leandro,

    Pretendes saber as permissoes de uma lista atraves dos serviços web Services do SharePoint  ou atraves de code behind como tem o Grabiel?

    Quando leio o titulo fico com duvida.


    André Lage Microsoft SharePoint, CRM and Sybase Consultant
    Blog:http://aaclage.blogspot.com
    Codeplex:http://spupload.codeplex.com/http://simplecamlsearch.codeplex.com/
    sexta-feira, 21 de outubro de 2011 20:01
    Moderador
  • Gabriel,

     

    Esse método seu usa a API do SharePOint, certo?? eu estou usando somente os WebServices do SharePoint, tem como conceder permissão para listas via WebServices??


    -----------------------
    www.leandroprado.com.br
    segunda-feira, 24 de outubro de 2011 11:18
  • André,

    Preciso recuperar as listas de um determinado site, e conceder permissão para essas listas

    Ex: Lista Cliente - conceder permissão para o grupo no AD chamado grpClienteXXX como FullControl

    Lista Desenvolvedor -  - conceder permissão para o grupo no AD chamado grpDesenvXXX como Contributor

    Estou fazendo essa costumização usando os WS do SharePoint

    Fico no aguardo


    -----------------------
    www.leandroprado.com.br
    segunda-feira, 24 de outubro de 2011 11:20
  • Ola Leandro,

    Compreendo o que pretendes mas nao e possivel alterar a permissao apenas para 1 lista, web services nao disponibilizam um metodo para adicionar a permissao sem que esta quebre a herança entre permissoes, e possivel adicionar permissioes a nivel geral, mas nao e possivel quebrar as permissoes.

    O que posso recomendar é criar um Web Service para sharepoint onde realizas essa tarefa:

    Como criar um Web Service em SharePoint http://msdn.microsoft.com/en-us/library/ms464040.aspx

    Cria um metodo para o Web Service onde envias o nome da lista, user/group e permissao e depois realizas a quebra da permissao

    Exemplo:

    var docs = web.Lists["$list$"];                               
    docs.BreakRoleInheritance(false);
    docs.ContentTypesEnabled = true;
    docs.EnableVersioning = true;
    docs.ForceCheckout = false;

    SPRoleDefinition oRole = web.RoleDefinitions.GetByType(SPRoleType.Contributor);
    SPRoleAssignment roleAssignment = new SPRoleAssignment(web.SiteGroups["$group$"]);
    roleAssignment.RoleDefinitionBindings.Add(oRole);                               
    docs.RoleAssignments.Add(roleAssignment);



    André Lage Microsoft SharePoint, CRM and Sybase Consultant
    Blog:http://aaclage.blogspot.com
    Codeplex:http://spupload.codeplex.com/http://simplecamlsearch.codeplex.com/
    terça-feira, 25 de outubro de 2011 12:30
    Moderador
  • Obrigado pela ajuda André

    Realmente os WS não tem essa opção então acabei usando o Client Object Model 

    obrigado pela ajuda


    -----------------------
    www.leandroprado.com.br
    terça-feira, 25 de outubro de 2011 14:48
  • Client object model da resposta a muito dos problemas, este e um deles

    Uma coisa Leandro, tenta identificar a versao que estas a trabalhar SP "2010, 2007"

    ajuda a indicar as opcoes podes tomar.


    André Lage Microsoft SharePoint, CRM and Sybase Consultant
    Blog:http://aaclage.blogspot.com
    Codeplex:http://spupload.codeplex.com/http://simplecamlsearch.codeplex.com/
    terça-feira, 25 de outubro de 2011 15:17
    Moderador