none
Níveis de Acesso RRS feed

  • Pergunta

  • Bom, minha questão parece simples, porém, não estou sabendo como proceder. 

    Tenho 2 tabelas no banco de dados, que são referentes aos utilizadores do Sistema, as tabelas são (Nível de Acesso e Usuários), eu possuo 2 utilizadores: ADMINISTRADOR (além de fazer tudo que um utilizador comum faz, ele ainda cadastra os utilizadores COMUM, além disso o ADMINISTRADOR faz operações de gerenciamento) e o COMUM (Faz a parte operacional do Sistema e não pode cadastrar utilizadores). Na interface do Sistema, eu utilizo um MenuStrip e fiz um panel, para por ícones de ações que os utilizadores também fazem (existem ações tanto nos itens do MenuStrip, como também nesse panel com ícones. 

    O que eu quero fazer é: Quando o utilizador COMUM acessar o Sistema, a opção de CADASTRAR USUÁRIO (ação apenas do ADMINISTRADOR) fique desabilitada.

    Como devo proceder ? 

    quarta-feira, 12 de abril de 2017 09:55

Respostas

  • Olá,

    Como uma sugestão simples, sugiro os seguintes passos:

    1 - Desenvolva um método responsável por gerenciar o Menu. O parâmetro desse método será a permissão.
    2 - No seu menu, utilize o campo Tag a seu favor. Informe nele, por exemplo, quais os id's das permissões ele admite (configure via Properties mesmo):


    3 - Quando o usuário efetuar o Login, você chama a rotina para gerenciar o menu.

    Segue um exemplo de código básico que desenvolvi para lhe auxiliar:

            private const int ADMIN = 1;
            private const int USER = 2;
    
            private void VarrerMenu(int idpermissao, ToolStripItemCollection menuItens)
            {
                foreach (ToolStripMenuItem menu in menuItens)
                {
                    this.VarrerMenu(idpermissao, menu.DropDownItems); //Chamada recursiva
                    if (menu.Tag != null)
                    {
                        menu.Enabled = menu.Tag.ToString().Contains(idpermissao.ToString()); //habilita ou desabilita o menu conforme a permissão.
                    }
                }
            }
    
            private void GerenciarMenu(int idpermissao)
            {
                this.VarrerMenu(idpermissao, this.menuStrip1.Items);
            }
    
    
            private void Form1_Load(object sender, EventArgs e)
            {
                this.GerenciarMenu(USER);
            }

    Como lhe disse, é apenas um exemplo básico de como você pode fazer isso. Ajuste conforme o seu cenário.

    Espero ter lhe ajudado!


    Hudson Carvalho

    quinta-feira, 13 de abril de 2017 01:59

Todas as Respostas

  • André,

    Você não pode simplesmente alterar a propriedade visible ou enabled dos itens de menu que gostaria desabilitar?

    Se esta não for sua dúvida, explique mais detalhado por favor.


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    quarta-feira, 12 de abril de 2017 10:51
  • André,

    Você não pode simplesmente alterar a propriedade visible ou enabled dos itens de menu que gostaria desabilitar?

    Se esta não for sua dúvida, explique mais detalhado por favor.


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    Então, mas...como eu poderia proceder ? 

    Pensei em criar um IF, que fosse ligado direto ao Nivel de Acesso no banco de dados dentro do MenuStrip, quando o utilizador estivesse ligado, faria uma verificação deste if: 

    IF(NivelAcesso == 1)

    {

    // desabilitava caso o Nivel do Utilizador não fosse igual a 1

    }

    Estou apenas cogitando essa situação que digitei acima, não sei se funcionaria deste modo. Estou desenvolvendo um sistema que, além de servir como um projeto de TCC, também será implementado num estabelecimento que se interessou pelo projeto, por isso, estou me atendo a diversos detalhes, para que fique algo bacana, tanto para quando eu for apresentar, como também para quando for implementado no local a que se destina o sistema.

    quarta-feira, 12 de abril de 2017 19:56
  • Olá,

    Como uma sugestão simples, sugiro os seguintes passos:

    1 - Desenvolva um método responsável por gerenciar o Menu. O parâmetro desse método será a permissão.
    2 - No seu menu, utilize o campo Tag a seu favor. Informe nele, por exemplo, quais os id's das permissões ele admite (configure via Properties mesmo):


    3 - Quando o usuário efetuar o Login, você chama a rotina para gerenciar o menu.

    Segue um exemplo de código básico que desenvolvi para lhe auxiliar:

            private const int ADMIN = 1;
            private const int USER = 2;
    
            private void VarrerMenu(int idpermissao, ToolStripItemCollection menuItens)
            {
                foreach (ToolStripMenuItem menu in menuItens)
                {
                    this.VarrerMenu(idpermissao, menu.DropDownItems); //Chamada recursiva
                    if (menu.Tag != null)
                    {
                        menu.Enabled = menu.Tag.ToString().Contains(idpermissao.ToString()); //habilita ou desabilita o menu conforme a permissão.
                    }
                }
            }
    
            private void GerenciarMenu(int idpermissao)
            {
                this.VarrerMenu(idpermissao, this.menuStrip1.Items);
            }
    
    
            private void Form1_Load(object sender, EventArgs e)
            {
                this.GerenciarMenu(USER);
            }

    Como lhe disse, é apenas um exemplo básico de como você pode fazer isso. Ajuste conforme o seu cenário.

    Espero ter lhe ajudado!


    Hudson Carvalho

    quinta-feira, 13 de abril de 2017 01:59
  • Olá,

    Como uma sugestão simples, sugiro os seguintes passos:

    1 - Desenvolva um método responsável por gerenciar o Menu. O parâmetro desse método será a permissão.
    2 - No seu menu, utilize o campo Tag a seu favor. Informe nele, por exemplo, quais os id's das permissões ele admite (configure via Properties mesmo):


    3 - Quando o usuário efetuar o Login, você chama a rotina para gerenciar o menu.

    Segue um exemplo de código básico que desenvolvi para lhe auxiliar:

            private const int ADMIN = 1;
            private const int USER = 2;
    
            private void VarrerMenu(int idpermissao, ToolStripItemCollection menuItens)
            {
                foreach (ToolStripMenuItem menu in menuItens)
                {
                    this.VarrerMenu(idpermissao, menu.DropDownItems); //Chamada recursiva
                    if (menu.Tag != null)
                    {
                        menu.Enabled = menu.Tag.ToString().Contains(idpermissao.ToString()); //habilita ou desabilita o menu conforme a permissão.
                    }
                }
            }
    
            private void GerenciarMenu(int idpermissao)
            {
                this.VarrerMenu(idpermissao, this.menuStrip1.Items);
            }
    
    
            private void Form1_Load(object sender, EventArgs e)
            {
                this.GerenciarMenu(USER);
            }

    Como lhe disse, é apenas um exemplo básico de como você pode fazer isso. Ajuste conforme o seu cenário.

    Espero ter lhe ajudado!


    Hudson Carvalho

    Caro Hudson, 

    Compreendi um pouco o que você me informou, vou tentar ver uma forma de implementar. Como estou fazendo por módulos, e no caso, o Login é o segundo módulo (antes vêm uma splash screen), vou ver direito e qualquer coisa retorno.

    quinta-feira, 13 de abril de 2017 09:36