none
Como criar nivel de Acesso para Usuarios em Form C# RRS feed

  • Pergunta

  • Bom dia pessoal,

    Estou tentando fazer nivel de acesso para as abas de um TabControl em um Form em C#, Tenho toda estrutura de banco feita e com cadastro referenciando Nivel = ADMINISTRADOR OU = USUARIO.

    Fiz um metodo para comparar o que tem no banco (Se o select vir com NIVEL "ADMINISTRADOR") "Libera todas as abas" (Se o select vir com NIVEL "USUARIO") ele vai liberar as abas mas sem a aba de cadastro de usuario.

    Bom resumindo, fiz o metodo abaixo, mas não funcionou, gostaria de uma ajuda dos meus companheiros de forum para solucionar este caso...

    Segue metodo:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.SqlClient;
    using System.Data.SqlTypes;
    using System.Data;
    using System.Data.Sql;
    using System.Net;
    using System.ComponentModel;
    using System.Drawing;
    using System.Windows.Forms;
    using System.Threading;
    using System.Configuration;
    using System.IO;

    namespace Controle_de_Portaria
    {
        public class NivelUsuario: Form1
        {
            public void NivelUser()
            {
                Form1 form = new Form1();
                //Controle das abas do Form.
                TabPage tab1 = form.RegistroEntrada;
                TabPage tab2 = form.RegistroSaida;
                TabPage tab3 = form.RelatorioMov;
                TabPage tab4 = form.ConsultaUtil;
                TabPage tab5 = form.CadastroUser;

                //Limpei as tabpages do pagecontrol para depois adicionar só o que o usuário poderá acessar.
                form.Tab01.TabPages.Clear();

                //Aqui vc teria que fazer um sql para retornar os campos das tabelas que salvam as permissões de acesso

                string connection = ConfigurationManager.ConnectionStrings["CONEXAO"].ConnectionString;
                SqlConnection cn = null;

                try
                {
                    cn = new SqlConnection();
                    cn.ConnectionString = connection;
                    cn.Open();
                }
                catch (Exception ex)
                {
                    string erro = string.Empty;
                    erro = ex.Message;
                    if (ex.InnerException != null)
                        erro += Environment.NewLine + ex.InnerException.Message;
                    MessageBox.Show(erro);

                }

                SqlCommand comm = new SqlCommand("Select count(*) From USUARIOS Where NIVEL = @NIVEL", cn);
                 if (comm.Parameters.Contains("ADMINISTRADOR"))
                {       
                string NIVEL = "SNSNS";

                for (int i = 0; i < NIVEL.Length; i++)
                {
                    switch (i)
                    {
                        case 0:
                            if (NIVEL[i] == 'N')
                            {
                                form.Tab01.TabPages.Add(tab1);
                            }
                            break;
                        case 1:
                            if (NIVEL[i] == 'N')
                            {
                                form.Tab01.TabPages.Add(tab2);
                            }
                            break;
                        case 2:
                            if (NIVEL[i] == 'N')
                            {
                                form.Tab01.TabPages.Add(tab3);
                            }
                            break;
                        case 3:
                            if (NIVEL[i] == 'N')
                            {
                                form.Tab01.TabPages.Add(tab4);
                            }
                            break;
                        case 4:
                            if (NIVEL[i] == 'S')
                            {
                                form.Tab01.TabPages.Add(tab5);
                            }
                            break;
                        }
                    }
                }
                if (comm.Parameters.Contains("USUARIO"))
                {
                    string NIVEL = "SNSNS";

                    for (int i = 0; i < NIVEL.Length; i++)
                    {
                        switch (i)
                        {
                            case 0:
                                if (NIVEL[i] == 'S')
                                {
                                    form.Tab01.TabPages.Add(tab1);
                                }
                                break;
                            case 1:
                                if (NIVEL[i] == 'N')
                                {
                                    form.Tab01.TabPages.Add(tab2);
                                }
                                break;
                            case 2:
                                if (NIVEL[i] == 'S')
                                {
                                    form.Tab01.TabPages.Add(tab3);
                                }
                                break;
                            case 3:
                                if (NIVEL[i] == 'N')
                                {
                                    form.Tab01.TabPages.Add(tab4);
                                }
                                break;
                            case 4:
                                if (NIVEL[i] == 'N')
                                {
                                    form.Tab01.TabPages.Add(tab5);
                                }
                                break;
                        }
                    }
                }
            }     
        }
    }

    Desde já muito obrigado.


    Luiz Carlos


    • Movido Olavo Oliveira Neto terça-feira, 3 de abril de 2012 12:46 Amigo, estou movendo sua thread para um fórum especifico de Windows Forms (De:.NET Development - Geral)
    • Editado LC-Locker terça-feira, 3 de abril de 2012 12:49 arrumar titulo
    terça-feira, 3 de abril de 2012 12:36

Respostas

  • Obrigado a todos...

    Consegui fazer... vou postar aqui e se ajudar alguem por favor marquem como resposta tbm!!!

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.SqlClient;
    using System.Data.SqlTypes;
    using System.Data;
    using System.Data.Sql;
    using System.Net;
    using System.ComponentModel;
    using System.Drawing;
    using System.Windows.Forms;
    using System.Threading;
    using System.Configuration;
    using System.IO;

    namespace Controle_de_Portaria
    {
        public class NivelUsuario: Form1
        {
            public string GetNivelUsuario(string USUARIO, string SENHA)
            {
                string connection = ConfigurationManager.ConnectionStrings["CONEXAO"].ConnectionString;
                SqlConnection cn = null;

                try
                {
                    cn = new SqlConnection();
                    cn.ConnectionString = connection;
                    cn.Open();
                }
                catch (Exception ex)
                {
                    string erro = string.Empty;
                    erro = ex.Message;
                    if (ex.InnerException != null)
                        erro += Environment.NewLine + ex.InnerException.Message;
                    MessageBox.Show(erro);
                }
                string strSQL = String.Format("Select NIVEL From USUARIOS WHERE LOGIN = @LOGIN And SENHA = @SENHA");
                SqlCommand comm = new SqlCommand(strSQL, cn);
                comm.Parameters.AddWithValue("LOGIN",  SqlDbType.NVarChar).Value = USUARIO;
                comm.Parameters.AddWithValue("SENHA", SqlDbType.NVarChar).Value = SENHA;
                return (string)comm.ExecuteScalar();
            }

            public void HabilitaAbasByUsuario(Form1 form, string NivelUsuario)
            {
                Estrutura tabela = new Estrutura();

                //Controle das abas do Form.
                TabPage tab1 = form.RegistroEntrada;
                TabPage tab2 = form.RegistroSaida;
                TabPage tab3 = form.RelatorioMov;
                TabPage tab4 = form.ConsultaUtil;
                TabPage tab5 = form.CadastroUser;
                form.Tab01.TabPages.Clear();
                if (NivelUsuario.Equals("ADMINISTRADOR"))
                {
                    string NIVEL = "SNSNS";

                    for (int i = 0; i < NIVEL.Length; i++)
                    {
                        switch (i)
                        {
                            case 0:
                                if (NIVEL[i] == 'S')
                                {
                                    form.Tab01.TabPages.Add(tab1);
                                }
                                break;
                            case 1:
                                if (NIVEL[i] == 'N')
                                {
                                    form.Tab01.TabPages.Add(tab2);
                                }
                                break;
                            case 2:
                                if (NIVEL[i] == 'S')
                                {
                                    form.Tab01.TabPages.Add(tab3);
                                }
                                break;
                            case 3:
                                if (NIVEL[i] == 'N')
                                {
                                    form.Tab01.TabPages.Add(tab4);
                                }
                                break;
                            case 4:
                                if (NIVEL[i] == 'S')
                                {
                                    form.Tab01.TabPages.Add(tab5);
                                }
                                break;
                        }
                    }
                }
                else if (NivelUsuario.Equals("USUARIO"))
                {
                    string NIVEL = "SSSSS";

                    for (int i = 0; i < NIVEL.Length; i++)
                    {
                        switch (i)
                        {
                            case 0:
                                if (NIVEL[i] == 'S')
                                {
                                    form.Tab01.TabPages.Add(tab1);
                                }
                                break;
                            case 1:
                                if (NIVEL[i] == 'S')
                                {
                                    form.Tab01.TabPages.Add(tab2);
                                }
                                break;
                            case 2:
                                if (NIVEL[i] == 'S')
                                {
                                    form.Tab01.TabPages.Add(tab3);
                                }
                                break;
                            case 3:
                                if (NIVEL[i] == 'S')
                                {
                                    form.Tab01.TabPages.Add(tab4);
                                }
                                break;
                            case 4:
                                if (NIVEL[i] == 'N')
                                {
                                    form.Tab01.TabPages.Add(tab5);
                                }
                                break;
                        }
                    }
                }
            }     
        }
    }


    Luiz Carlos

    • Marcado como Resposta LC-Locker terça-feira, 10 de abril de 2012 11:31
    terça-feira, 10 de abril de 2012 11:30

Todas as Respostas

  • Boa tarde amigo LC-Locker.

    Não sei fiz errado, mas quando precisei fazer uma coisa parecida com essa que vc está falando eu só removi o tabpage q não iria usar.

    tem um exemplo nesse link aqui.

    http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/e5dbadb2-22a2-4a04-a613-953c360f75e6

    dá uma olhada para ver se isso serve pra vc.

    terça-feira, 3 de abril de 2012 18:40
  • Olá Leonardo,

    Não é bem isso...

    Mas muito obrigado!!

    Eu preciso fazer o login e nesse momento vai rolar um select numa tabela "USUARIOS" e verificar se no campo "NIVEL" for = "ADMINISTRADOR" se for ele liberaria a aba de cadastro...


    Luiz Carlos

    terça-feira, 3 de abril de 2012 19:05
  • Tente fazer um método em que limpa todas as abas com o método Clear() e as recria com os respectivos IFs, se for administrador cria, se não for não cria ou então deixe previamente todas criadas e exclua aquela que não for ser exibida.

    Aliás, qual erro está dando?


    Abraços!


    thiagokoelho

    quarta-feira, 4 de abril de 2012 21:14
  • Olá LC-Locker

    Tem um forma de fazer usando reflection, você vê a propriedade do projeto e exibe caso o usuário tenha permissão.

    Interessante criar um biblioteca de segurança onde faça esse trabalho nos forms.


    If was useful mark as answered. Mariano, Paulo T. C.

    sexta-feira, 6 de abril de 2012 23:40
  • Obrigado a todos...

    Consegui fazer... vou postar aqui e se ajudar alguem por favor marquem como resposta tbm!!!

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.SqlClient;
    using System.Data.SqlTypes;
    using System.Data;
    using System.Data.Sql;
    using System.Net;
    using System.ComponentModel;
    using System.Drawing;
    using System.Windows.Forms;
    using System.Threading;
    using System.Configuration;
    using System.IO;

    namespace Controle_de_Portaria
    {
        public class NivelUsuario: Form1
        {
            public string GetNivelUsuario(string USUARIO, string SENHA)
            {
                string connection = ConfigurationManager.ConnectionStrings["CONEXAO"].ConnectionString;
                SqlConnection cn = null;

                try
                {
                    cn = new SqlConnection();
                    cn.ConnectionString = connection;
                    cn.Open();
                }
                catch (Exception ex)
                {
                    string erro = string.Empty;
                    erro = ex.Message;
                    if (ex.InnerException != null)
                        erro += Environment.NewLine + ex.InnerException.Message;
                    MessageBox.Show(erro);
                }
                string strSQL = String.Format("Select NIVEL From USUARIOS WHERE LOGIN = @LOGIN And SENHA = @SENHA");
                SqlCommand comm = new SqlCommand(strSQL, cn);
                comm.Parameters.AddWithValue("LOGIN",  SqlDbType.NVarChar).Value = USUARIO;
                comm.Parameters.AddWithValue("SENHA", SqlDbType.NVarChar).Value = SENHA;
                return (string)comm.ExecuteScalar();
            }

            public void HabilitaAbasByUsuario(Form1 form, string NivelUsuario)
            {
                Estrutura tabela = new Estrutura();

                //Controle das abas do Form.
                TabPage tab1 = form.RegistroEntrada;
                TabPage tab2 = form.RegistroSaida;
                TabPage tab3 = form.RelatorioMov;
                TabPage tab4 = form.ConsultaUtil;
                TabPage tab5 = form.CadastroUser;
                form.Tab01.TabPages.Clear();
                if (NivelUsuario.Equals("ADMINISTRADOR"))
                {
                    string NIVEL = "SNSNS";

                    for (int i = 0; i < NIVEL.Length; i++)
                    {
                        switch (i)
                        {
                            case 0:
                                if (NIVEL[i] == 'S')
                                {
                                    form.Tab01.TabPages.Add(tab1);
                                }
                                break;
                            case 1:
                                if (NIVEL[i] == 'N')
                                {
                                    form.Tab01.TabPages.Add(tab2);
                                }
                                break;
                            case 2:
                                if (NIVEL[i] == 'S')
                                {
                                    form.Tab01.TabPages.Add(tab3);
                                }
                                break;
                            case 3:
                                if (NIVEL[i] == 'N')
                                {
                                    form.Tab01.TabPages.Add(tab4);
                                }
                                break;
                            case 4:
                                if (NIVEL[i] == 'S')
                                {
                                    form.Tab01.TabPages.Add(tab5);
                                }
                                break;
                        }
                    }
                }
                else if (NivelUsuario.Equals("USUARIO"))
                {
                    string NIVEL = "SSSSS";

                    for (int i = 0; i < NIVEL.Length; i++)
                    {
                        switch (i)
                        {
                            case 0:
                                if (NIVEL[i] == 'S')
                                {
                                    form.Tab01.TabPages.Add(tab1);
                                }
                                break;
                            case 1:
                                if (NIVEL[i] == 'S')
                                {
                                    form.Tab01.TabPages.Add(tab2);
                                }
                                break;
                            case 2:
                                if (NIVEL[i] == 'S')
                                {
                                    form.Tab01.TabPages.Add(tab3);
                                }
                                break;
                            case 3:
                                if (NIVEL[i] == 'S')
                                {
                                    form.Tab01.TabPages.Add(tab4);
                                }
                                break;
                            case 4:
                                if (NIVEL[i] == 'N')
                                {
                                    form.Tab01.TabPages.Add(tab5);
                                }
                                break;
                        }
                    }
                }
            }     
        }
    }


    Luiz Carlos

    • Marcado como Resposta LC-Locker terça-feira, 10 de abril de 2012 11:31
    terça-feira, 10 de abril de 2012 11:30