none
Sistema de Login e senha com nivel de acesso diferente RRS feed

  • Pergunta

  •  olá pessoal gostaria de alguém com alma caridosa que poderia me ajuda nesse pequeno problema ; (
    prof pediu para fazer uma sistema login e senha com nível de acesso diferente de usuários cadastrado,
    porem eu consigo fazer sistema de login e senha normal, o problema é coloca acesso diferente de cada usuários cadastrado no banco de dados Access.

    private void btnLogar_Click(object sender, EventArgs e)
            {
                string conexao = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\bancodados.mdb;Persist Security Info=True;Jet OLEDB:Database Password=123";
                OleDbConnection con = new OleDbConnection(conexao);

                OleDbCommand comando = new OleDbCommand("SELECT COUNT (*) FROM tbUsuarios WHERE UserNome = @user AND UserSenha = @senha AND Nivel = @nivel", con);

                comando.Parameters.Add("@user", OleDbType.VarChar).Value = txtBoxUsuario.Text;
                comando.Parameters.Add("@senha", OleDbType.VarChar).Value = txtBoxSenha.Text;
                comando.Parameters.Add("@nivel", OleDbType.VarChar).Value = 1;


                con.Open();
                int i = (int)comando.ExecuteScalar();
                try
                {
                    if (i == 1)
                    {
                        MessageBox.Show("Professor Encontrado..");
                        Thread FecharTelaLogin = new Thread(new ThreadStart(abrir));
                        FecharTelaLogin.Start();
                        this.Close();
                    }
                    else
                    {
                       MessageBox.Show("Aluno Encontrado..");
                       Thread FecharTelaLogin2 = new Thread(new ThreadStart(abrir2));
                       FecharTelaLogin2.Start();
                       this.Close();

                    }
                }
                catch (Exception Ex)
                {
                    MessageBox.Show(Ex.Message, "Usuarios Nao encontrados", MessageBoxButtons.OK, MessageBoxIcon.Information);
                   con.Close();
                }



            }
            private void abrirFormProf()
            {
                SplashScreenProf painel = new SplashScreenProf();
                Application.Run(painel);
            }
            private void abrirFormAluno()
            {
                SplashAluno painel2 = new SplashAluno();
                Application.Run(painel2);
            }


        }
    }

                                   
    domingo, 27 de outubro de 2013 22:49

Respostas

  • Diego,

    Conforme conversamos te orientei a criar uma classe para guardar o ID do usuário logado, logo apos isso faça a pesquisa deste usuário onde você passe o id do mesmo para não retornar todos, mas sim apenas daquele usuário.

    Vitor Mendes | http://www.vitormendes.com.br/

    "Ajuda teu semelhante a levantar a sua carga, porém, não a carregá-la." (Pitágoras)

    • Marcado como Resposta DiegoANS quinta-feira, 31 de outubro de 2013 21:42
    quinta-feira, 31 de outubro de 2013 21:38

Todas as Respostas

  • Qual a sua duvida de como validar o usuário ?

    segunda-feira, 28 de outubro de 2013 00:21
  • sim validar usuário com acesso
    segunda-feira, 28 de outubro de 2013 00:22
  • Você tem a coluna com os níveis de acesso correto tipo : Acesso = Administrador, Operador

    você faz a select UserNome, nível From..... WHERE ..........

    no retorno dessa query vc verifica o usuário e o nível dele em vez do ExecuteScalar usa ExecuteNonQuery e le esses dados com um SqlDataReader.

    segunda-feira, 28 de outubro de 2013 00:40
  • bom entendi que tenho que fazer uma nova SELECT, no caso seria OleDBDataReader?
    segunda-feira, 28 de outubro de 2013 01:14
  • Isso, mesmo.
    terça-feira, 29 de outubro de 2013 10:28
  • Daniel agora estou com um outro problema,

    consegui fazer autenticação usuario e senha + nivel de acesso...

    problema que nao vou para outro form no caso seria form do professor fiz um

    "SELECT usuario,Nome,Telefone,DataNascimento,nivel FROM Usuarios";

    ele mostra outra conta.... por exemplo

    loguei na conta test fui direcionado para um form prof nesse form coloquei seletc usuario, nome ... from... etc
    so que aparece no textbox informação nome telefone data nivel de outra conta, vou passa o codigo aqui

    Area de Login

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Threading;
    using System.Data.OleDb;
    using System.Configuration;
    
    namespace LoginSenha
    {
        public partial class telaDeLogin : Form
        {
            //int contError = 0;
            public telaDeLogin()
            {
                InitializeComponent();
            }
    
            public static string usuarioConectado;
            public static string nivelAcesso;
    
            private void btnLimpar_Click(object sender, EventArgs e)
            {
                txtBoxUsuario.Text = "";
                txtBoxSenha.Text = "";
                comboBoxNivel.Text = null;
            }
    
            private void btnLogar_Click(object sender, EventArgs e)
            {
               OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\banco_1.mdb");
    
                OleDbCommand cmd = new OleDbCommand("SELECT Count(*) FROM Usuarios WHERE usuario = @user AND senha = @pw AND nivel = @nivelAce", cn);
    
                cmd.Parameters.Add("@user", OleDbType.VarChar).Value = txtBoxUsuario.Text;
                cmd.Parameters.Add("@senha", OleDbType.VarChar).Value = txtBoxSenha.Text;
                cmd.Parameters.Add("@nivelAce", OleDbType.VarChar).Value = comboBoxNivel.Text;
    
                cn.Open();
    
                OleDbDataReader le = null;
    
    
                le = cmd.ExecuteReader();
    
    
                if (le.Read())
                {
                    this.Hide();
                    usuarioConectado = txtBoxUsuario.Text;
                    nivelAcesso = comboBoxNivel.Text;
    
                    Thread FecharTelaLogin = new Thread(new ThreadStart(abrir));
                    FecharTelaLogin.Start();
                    this.Close();
                }
                else
                {
                    MessageBox.Show(txtBoxUsuario,"Usuario Nao encontrado!");
                    MessageBox.Show(txtBoxSenha, "Senha Nao encontrado!");
                    MessageBox.Show(comboBoxNivel, "Usuario e senha Nao encontrado");
                }
    
                cn.Close();
            }
            private void abrir()
            {
                SplashScreen painel = new SplashScreen();
                Application.Run(painel);
                
            }
            
         }
    }
    

    Simples SplashScreen

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace LoginSenha
    {
        public partial class SplashScreen : Form
        {
            public SplashScreen()
            {
                InitializeComponent();
            }
    
            private void timer1_Tick(object sender, EventArgs e)
            {
                if (progressBar1.Value < 50)
                {
                    progressBar1.Value = progressBar1.Value + 2;      
                }
                else if (telaDeLogin.nivelAcesso == "Professor")
                    {
                        timer1.Enabled = false;
                        this.Visible = false;
                        menuProf w2 = new menuProf();
                        w2.ShowDialog();
                        Application.Exit();
                    }
                else if (telaDeLogin.nivelAcesso == "Aluno")
                {
                    timer1.Enabled = false;
                    this.Visible = false;
                    menuAluno meunualo = new menuAluno();
                    meunualo.ShowDialog();
                    Application.Exit();
                }
            }
        }
    }
    

    Form prof

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Data.OleDb;
    
    namespace LoginSenha
    {
        public partial class menuProf : Form
        {
                    
    
            public menuProf()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                
                OleDbConnection Conection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\banco_1.mdb");
                Conection.Open();
    
                OleDbCommand comando = Conection.CreateCommand();
                comando.CommandText = "SELECT usuario,Nome,Telefone,DataNascimento,nivel FROM Usuarios";
    
    
                OleDbDataReader dr = comando.ExecuteReader();
    
    
                while (dr.Read())
                {
                    txtBoxUsuario.Text = Convert.ToString(dr["usuario"]);
                    txtBoxNome.Text = Convert.ToString(dr["Nome"]);
                    txtBoxTelefone.Text = Convert.ToString(dr["Telefone"]);
                    txtBoxData.Text = Convert.ToString(dr["DataNascimento"]);
                    txtBoxNivel.Text = Convert.ToString(dr["nivel"]);
                    
                    
                   
                }
                dr.Close();
                Conection.Close();
            }
    
            private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
            {
    
            }
        }
    }
    

    se puder me ajuda ;D

    • Sugerido como Resposta Paula Iely sábado, 5 de abril de 2014 14:25
    terça-feira, 29 de outubro de 2013 21:03
  • Falta sua clausula WHERE na sua select do professor.
    quarta-feira, 30 de outubro de 2013 09:50
  • pode me da um exemplo daniel?
    quinta-feira, 31 de outubro de 2013 01:31
  • Quando você faz o SELECT nome,nivel,telefone FROM USUARIOS essa query retorna todos os dados de sua tabela você tem que utilizar um filtro por exemplo supondo que o professor que você deseja encontrar seja Diego seria assim :

    SELECT Nome,DataNascimento,nivel FROM USUARIOS WHERE Nome = "'Diego'";
    Basta filtrar pelo nome ou por alguma chave primaria de sua tabela ou seja um campo que o valor seja único para cada linha.
    quinta-feira, 31 de outubro de 2013 10:14
  • daniel no meu caso ele so iria busca com nome Diego

    mais se acaso eu tiver duas conta com nivel de Professor... como vai fica?

    quinta-feira, 31 de outubro de 2013 20:05
  • Diego,

    Conforme conversamos te orientei a criar uma classe para guardar o ID do usuário logado, logo apos isso faça a pesquisa deste usuário onde você passe o id do mesmo para não retornar todos, mas sim apenas daquele usuário.

    Vitor Mendes | http://www.vitormendes.com.br/

    "Ajuda teu semelhante a levantar a sua carga, porém, não a carregá-la." (Pitágoras)

    • Marcado como Resposta DiegoANS quinta-feira, 31 de outubro de 2013 21:42
    quinta-feira, 31 de outubro de 2013 21:38

  • Obrigado Vitor ajudou muito vou estuda hard orientação a objetos
    quinta-feira, 31 de outubro de 2013 21:41