Olá,
Tenho uma aplicação onde utilizo nível de acesso para saber o que o usuário poderá fazer ou não, não faço restrição nenhuma no login, mas sim dentro das aplicações o que poderá ver/executar de acordo com o nível.
O que faço no login é apenas carregar uma variável estática com o nível de permissão do usuário.
Na tabela usuários criei uma coluna com o nível de cada um, (0 a 5) onde 5 é desenvolvedor e 0 é trial, enfim..
comando = new MySqlCommand("SELECT senha, nivel FROM usuario WHERE nome = @Nome", conexao);
comando.Parameters.AddWithValue("@Nome", usuario.Nome);
MySqlDataReader leitor = comando.ExecuteReader(CommandBehavior.CloseConnection);
if (leitor.HasRows)
while (leitor.Read())
{
usuario.Senha = leitor["senha"].ToString();
Usuario.Nivel = Convert.ToInt32(leitor["nivel"]);
}
}
leitor.Dispose();
return usuario;
a partir disso verifico a senha já recebo na variável estática o nível de acesso.
e no Login fica só assim:
Usuario usuario = new Usuario();
ObterUsuario(usuario);
if (txtSenha.Text == usuario.Senha)
{
Thread nt = new Thread(FormSistema);
nt.SetApartmentState(ApartmentState.STA);
nt.Start();
this.Close();
}
else
{
MessageBox.Show("Senha ou Usuario errado, tente novamente!", "iUP - Controle de Acesso",MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
Não sei se ajudou, mas acho pratico assim pq executa uma vez só, e da condições em qualquer parte do sistema restringir o que quer dar acesso ou não de acordo com o nível do usuário.
att,
Fracalossi