Usuário com melhor resposta
Permissão para listas através dos webservices

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
Respostas
-
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- Marcado como Resposta André LageModerator terça-feira, 25 de outubro de 2011 15:13
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- Sugerido como Resposta Gabriel NóvoaMicrosoft employee sexta-feira, 21 de outubro de 2011 19:54
- Não Sugerido como Resposta André LageModerator segunda-feira, 24 de outubro de 2011 11:19
-
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/- Editado André LageModerator sexta-feira, 21 de outubro de 2011 20:02
-
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 -
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 -
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/ -
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- Marcado como Resposta André LageModerator terça-feira, 25 de outubro de 2011 15:13
-
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/