none
[WSP] Listar todos os grupos e níveis de permissão de um site. Como fazer? RRS feed

  • Pergunta

  • Olá,

    Como que faço para listar todos os grupos e suas permissões dentro de uma site em uma WSP?

    Preciso do nome dos grupos e seus respectivos níveis de permissão.

    Obrigado


    K2rto'4 - Analista Sharepoint
    "Hoje melhor do que ontem, amanhã melhor do que hoje!" 改 善




    • Editado TI DEV segunda-feira, 9 de junho de 2014 13:39
    segunda-feira, 28 de abril de 2014 17:30

Respostas

  • Olá,

    Consegui aqui.

    Segue código:

                using (SPSite site = new SPSite(SPContext.Current.Web.Url))
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        foreach (SPRoleAssignment roleAssignment in web.RoleAssignments)
                        {
                            if (roleAssignment.Member is SPGroup)
                            {
                                Response.Write("Grupo: " + roleAssignment.Member.Name + "<br/>");
                                foreach (SPRoleDefinition roleDefinition in roleAssignment.RoleDefinitionBindings)
                                {
                                    Response.Write("Permissão: " + roleDefinition.Name + "<br/>");
                                }
                                Response.Write("<br/>");
                            }
                        }
                    }
                }

    Valeuuuuuuuuuu


    K2rto'4 - Analista Sharepoint
    "Hoje melhor do que ontem, amanhã melhor do que hoje!" 改 善

    • Marcado como Resposta TI DEV segunda-feira, 28 de abril de 2014 17:33
    segunda-feira, 28 de abril de 2014 17:33
  • Olá,

    Se você quiser verificar se o usuário está em uma grupo em momento de execução, e este usuário somente possui nível de leitura no máximo, é preciso usar o seguinte código:

            private bool IsMember(string nomeGrupo, SPUser usuarioAtual)
            {
                bool isMember = false;
                SPSecurity.RunWithElevatedPrivileges(delegate
                {
                    using (SPSite site = new SPSite(SPContext.Current.Web.Url))
                    {
                        using (SPWeb web = site.OpenWeb())
                        {
                            SPGroupCollection userGroups = usuarioAtual.Groups;
    
                            foreach (SPGroup group in userGroups)
                            {
                                if (group.Name.Contains(nomeGrupo))
                                {
                                    isMember = true;
                                    break;
                                }
                            }
                        }
                    }
    
                });
    
                return isMember;
            }

    Você pode combinar os dois códigos sempre utilizando o SPSecurity.RunWithElevatedPrivileges

    Valeuuuuuuuuu


    K2rto'4 - Analista Sharepoint
    "Hoje melhor do que ontem, amanhã melhor do que hoje!" 改 善


    • Marcado como Resposta TI DEV terça-feira, 29 de abril de 2014 19:29
    • Editado TI DEV terça-feira, 29 de abril de 2014 19:39
    terça-feira, 29 de abril de 2014 19:29

Todas as Respostas

  • Olá,

    Consegui aqui.

    Segue código:

                using (SPSite site = new SPSite(SPContext.Current.Web.Url))
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        foreach (SPRoleAssignment roleAssignment in web.RoleAssignments)
                        {
                            if (roleAssignment.Member is SPGroup)
                            {
                                Response.Write("Grupo: " + roleAssignment.Member.Name + "<br/>");
                                foreach (SPRoleDefinition roleDefinition in roleAssignment.RoleDefinitionBindings)
                                {
                                    Response.Write("Permissão: " + roleDefinition.Name + "<br/>");
                                }
                                Response.Write("<br/>");
                            }
                        }
                    }
                }

    Valeuuuuuuuuuu


    K2rto'4 - Analista Sharepoint
    "Hoje melhor do que ontem, amanhã melhor do que hoje!" 改 善

    • Marcado como Resposta TI DEV segunda-feira, 28 de abril de 2014 17:33
    segunda-feira, 28 de abril de 2014 17:33
  • Olá,

    Se você quiser verificar se o usuário está em uma grupo em momento de execução, e este usuário somente possui nível de leitura no máximo, é preciso usar o seguinte código:

            private bool IsMember(string nomeGrupo, SPUser usuarioAtual)
            {
                bool isMember = false;
                SPSecurity.RunWithElevatedPrivileges(delegate
                {
                    using (SPSite site = new SPSite(SPContext.Current.Web.Url))
                    {
                        using (SPWeb web = site.OpenWeb())
                        {
                            SPGroupCollection userGroups = usuarioAtual.Groups;
    
                            foreach (SPGroup group in userGroups)
                            {
                                if (group.Name.Contains(nomeGrupo))
                                {
                                    isMember = true;
                                    break;
                                }
                            }
                        }
                    }
    
                });
    
                return isMember;
            }

    Você pode combinar os dois códigos sempre utilizando o SPSecurity.RunWithElevatedPrivileges

    Valeuuuuuuuuu


    K2rto'4 - Analista Sharepoint
    "Hoje melhor do que ontem, amanhã melhor do que hoje!" 改 善


    • Marcado como Resposta TI DEV terça-feira, 29 de abril de 2014 19:29
    • Editado TI DEV terça-feira, 29 de abril de 2014 19:39
    terça-feira, 29 de abril de 2014 19:29