VB .NET - Login com Fluent NHibernate, NHibernate 4.0 e PostGreSql - II
Este artigo mostra como usar o Fluent NHibernate e o NHibernate 4.0 para criar uma aplicação que realiza o login e faz o registro de um novo usuário no banco de dados PostgreSQL mostrando também como realizar as operações CRUD de manutenção dos usuários usando o padrão Repository. |
Na primeira parte deste artigo criamos o banco de dados Cadastro e a tabela usuarios no PostgreSQL , criamos o projeto no Visual Studio, definimos as referências ao NHibernate, Fluent NHibernate e ao provedor Npgsql, definimos as entidades, o mapeamento e criamos a nossa SessionFactory e o nosso repositório. Quanto trabalho não é mesmo ?
Agora vamos continuar criando os formulários de login e registro no projeto Usuarios e mostrar realizar o login e registrar usuários.
Criando o formulário de login e de registro
No projeto Usuarios altere o nome do formulário form1.vb para frmLogin.vb e a seguir inclua neste formulário os seguintes controles a partir da ToolBox:
Disponha os controles conforme o leiaute da figura abaixo:
No código do formulário vamos primeiro incluir uma declaração para referenciar o projeto Repositorio:
Imports Repositorio
Logo após a declaração do formulário vamos definir uma variável do tipo UsuarioRepositorio:
Dim dao As UsuarioRepositorio
A seguir no evento Click do botão Login digite o código abaixo:
Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
ErrorProvider1.Clear()
If txtUsuario.Text = String.Empty Then
ErrorProvider1.SetError(txtUsuario, "Informe o login do usuário")
Return
End If
If txtSenha.Text = String.Empty Then
ErrorProvider1.SetError(txtSenha, "Informe a senha do usuário")
Return
End If
Try
Dim usuarioRepo = New UsuarioRepositorio
If (usuarioRepo.ValidarAcesso(txtUsuario.Text, txtSenha.Text)) Then
Me.Hide()
My.Forms.frmMenu.Show()
Else
MessageBox.Show("Login e/ou Senha inválidos", "Login Inválido", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Catch ex As Exception
MessageBox.Show("Erro ao acessar o sistema" & ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
|
Este código após realizar as validações das caixas de texto : txtUsuario, txtSenha, cria uma instância da classe UsuarioRepositorio e usa o método ValidarAcesso() para verificar se o usuário esta cadastrado e ativo na tabela usuarios.
Vamos criar uma rotina chamada ExibirUsuarios() que exibe os usuários cadastrados no controle DataGridView - dgvUsuarios.
A seguir temos o código desta rotina criada no formulário:
Private Sub ExibirUsuarios()
dao = New UsuarioRepositorio
dgvUsuarios.DataSource = dao.Consultar().ToList
End Sub
|
No menu Exibir inclua o código abaixo que irá chamar a rotina ExibirUsuarios:
Private Sub ExibirToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ExibirToolStripMenuItem.Click
ExibirUsuarios()
End Sub
|
Agora vamos incluir dois formulários ao projeto.
No menu PROJECT clique em Add Windows Forms e informe o nome frmRegistro.vb.
Repita o procedimento e inclua o formulário frmMenu.vb.
No formulário frmRegistro inclua os seguintes controles a partir da ToolBox:
1 GroupBox : Text = Registrar Usuario
4 Label
3 TextBox : txtNome, txtLogin, txtSenha
1 Combobox : cboStatus ( Ativo e Inativo)
2 Button : btnIncluir e btnSair
1 ErrorProvider
Disponha os controles no formulário conforme o leiaute abaixo:
No código do formulário vamos primeiro incluir uma declaração para referenciar o projeto Repositorio:
Imports Repositorio
A seguir no evento Click do botão Incluir digite o código abaixo:
Private Sub btnIncluir_Click(sender As Object, e As EventArgs) Handles btnIncluir.Click
ErrorProvider1.Clear()
If txtNome.Text = String.Empty Then
ErrorProvider1.SetError(txtNome, "Informe o nome do usuário")
Return
End If
If txtLogin.Text = String.Empty Then
ErrorProvider1.SetError(txtLogin, "Informe o login do usuário")
Return
End If
If txtSenha.Text = String.Empty Then
ErrorProvider1.SetError(txtSenha, "Informe a senha do usuário")
Return
End If
Dim usuarioRepo As New UsuarioRepositorio
If (usuarioRepo.ValidarLogin(txtLogin.Text)) Then
MessageBox.Show("Login já esta Cadastrado", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Else
Try
Dim user As New Usuario
user.Login = txtLogin.Text
user.Nome = txtNome.Text
user.Senha = txtSenha.Text
user.Status = retornaStatus()
usuarioRepo .Inserir(user)
Catch ex As Exception
MessageBox.Show("Erro ao cadastrar " & ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Warning)
End Try
MessageBox.Show("Login Cadastrado com sucesso", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
End Sub
|
Este código após realizar as validações das caixas de texto : txtNome, txtLogin e txtSenha, cria uma instância da classe UsuarioRepositorio e usa o método ValidarLogin() para verificar se o login do usuário esta cadastrado. Se o login estiver cadastrado será exibida uma alerta, ao usuário caso contrário será criado um novo objeto Usuario que receberá os valores digitados nas caixas de texto e usando o método Inserir do repositório para incluir o novo usuário.
Nota: Talvez a utilização da combobox para exibir o status do usuário não fosse necessária e a definição de ativo ou inativo no registro de usuário devesse ser automática para o registro de usuário. No entanto resolvi mostrar como podemos tratar esse item. Se desejar pode remover o controle e o código correspondente.
A rotina retornaStatus() apenas ajusta o valor atribuído ao campo Status. O seu código é dado abaixo:
Private Function retornaStatus() As Char
If cboStatus.Text = "Ativo" Then
Return "A"
ElseIf cboStatus.Text = "Inativo" Then
Return "I"
Else
Return "A"
End If
End Function
|
No evento Click do botão Sair temos o código abaixo que encerra o formulário:
Private Sub btnSair_Click(sender As Object, e As EventArgs) Handles btnSair.Click
Me.Close()
End Sub
|
O formulário frmMenu é usado apenas para exibir uma mensagem de bem-vindo ao usuário quando o login é efetuado com sucesso. Abaixo temos o seu leiaute:
Executando o projeto teremos:
Você pode incluir outros campos no login como email (usado para enviar a senha quando o usuário a esquece) e data de registro e também não precisa exibir a senha do usuário no DataGridView ocultando essa informação. Esses detalhes são simples de tratar e fica como exercício você decidir se vai ou não usar.
Na última parte do artigo irei implementar as funcionalidades para procurar um usuário, alterar e realizar a exclusão.
Pegue o projeto completo aqui: ControleUsuarios.zip (sem as referências)
João 3:17 Porque Deus enviou o seu Filho ao mundo, não para que julgasse o mundo, mas para que o mundo fosse salvo por ele.
João 3:18 Quem crê nele não é julgado; mas quem não crê, já está julgado; porquanto não crê no nome do unigênito Filho de Deus.
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#