Programação

Sistema de Login com Nível de Acesso – Delphi

Curta Nossa Página

Criando um Sistema de Login e Senha com nível de acesso e LOG com Delphi

Neste tutorial será criado um formulário de login e nível de acesso com banco de dados em access para que você possa proteger seu sistema impedindo a entrada de pessoas não autorizadas ou limitando o acesso a determinadas partes do sistema. O banco utilizado é o Access, mas serve para utilização de qualquer outro banco de dados.

Crie um Banco em Access e crie a tabela tbLogin

Tabela Login

tbLogin-nivel

Vamos definir o Nível do Usuário ( 0 – Usuário Comum | 1 – Administrador )


Projeto

Crie um projeto VCL Forms Application – Delphi for Win32

Renomei o nome do Form1 para frmLogin

Nele adicione os seguintes Componentes da Paleta: Standard:

ComponenteNameTextCaptionProperties
Edit1edtLoginVazio ------
Edit2edtSenhaVazio ---PasswordChar *
Label1lblLogin---Login---
Label2lblSenha---Senha---
Button1btnAcessar---Acessar ---
frmLogin
frmLogin

Salve Formulário de Login » pas.Login


Formulário Principal

Adicione um novo Form. ( File » New » Form – Delphi for Win32 )

Renomeie o nome do Form2 para frmPrincipal

Adicione os seguintes Componentes da Paleta: Standard:

ComponenteName Caption
Label1lblAcesso Você entrou no sistema!
Label2lblNivelAcesso ---
Button1btnCadastrarCadastrar
Button2btnAlterarAlterar
Button3btnExcluir Excluir

No Evento OnClose adicione

Application.Terminate;
frmPrincipal
frmPrincipal

Salve o Formulário Principal » pas.Principal


Data Module

Adicione um Data Module: File » New » Other… » Delphi Files » Data Module

data-module

Altere o nome do DataModule para DM

dm-name

Adicione os componentes das Paletas: dbGo e Data Access:

ComponenteInstruções
ADOConnectionConecte o banco Access; LoginPrompt = False; Ative a conexão do ADOConnection
ADOQueryConecte ao ADOConnection, Inclua o SQL (SELECT * FROM tbLogin) e Ative o ADOQuery
DataSourceLigue em Database para ADOQuery

dm-sistema-login

De dois cliques no ADOConnection e depois em Build…

ADOConnection-String

Escolha Microsoft Jet 4.0 OLE DB Provider e clique em Avançar

propriedades-vinculacao-de-dados

Clique na Aba Conexão escolha o local do Banco de dados e teste a conexão.

propriedades-vinculacao-de-dados-conexao

No ADOQuery adicione o comando SQL em:

ADOQuerySQL

Inclua o SELECT abaixo:

SELECT * FROM tbLogin
Ative o ADOQuery para True.

De um duplo clique em ADOQuery:

Clique com o Botão Direito do Mouse dentro da janela que ira abrir » Add all Fields

DM.ADOQuery

Salve o Data Module » pas.DataModule


Adicionando o Formulário Principal e o Data Module ao Formulário de Login:

No frmLogin inclua o frmPrincipal e o Data Module clicando em: File » Use Unit… ou Alt+F11 e escolha o Form de Principal e o Data Module » OK.

UseUnitPasLogin

Adicionando o Data Module ao Formulário Principal:

No frmPrincipal inclua o Data Module clicando em: File » Use Unit… ou Alt+F11 e escolha apenas o Data Module » OK.

UseUnitpasPrincipal


Adicionando o Código no btnAcessar no Formulário de Login:

No Button btnAcessar do frmPrincipal de um duplo clique e adicione o código abaixo:

DM.ADOQuery.Close;
DM.ADOQuery.SQL.Text := 'SELECT * FROM tbLogin WHERE Login = "'+edtLogin.Text+'" and Senha = "'+edtSenha.Text+'"';
DM.ADOQuery.Open;
  if DM.ADOQuery.RecordCount > 0 then
  begin
    frmPrincipal.Show;
    frmLogin.Visible := False;
  end
else
begin
  ShowMessage('Login ou Senha Errada!');
  edtLogin.SetFocus;
end;

Salve o Projeto » Login


Adicionando o Privilégio ao Formulário Principal:

Basta no Evento OnShow adicionar e definir o que pode ser visto ou não de acordo com o privilégio.

Exemplo:

Vamos supor que o Usuário Comum possa Cadastrar, mas não possa Alterar nem Excluir. Já o Administrador poderá fazer tudo.

Então no Evento OnShow do frmPrincipal adicione:

{
Se o Nivel de Usuário não for igual a 0
Desativa os Botões Alterar e Excluir
}
  if (DM.ADOQueryNivel.Value = 0) then
  begin
    btnCadastrar.Enabled := True;
    btnAlterar.Enabled := False;
    btnExcluir.Enabled := False;
    lblNivelAcesso.Caption := 'Usuário Comum';
   exit
  end
else // Senão: Libera todos os Botões
 begin
   btnCadastrar.Enabled := True;
   btnAlterar.Enabled := True;
   btnExcluir.Enabled := True;
   lblNivelAcesso.Caption := 'Administrador';
 end;

Administrador:

Abra o Banco Access e Adicione um Login e uma Senha qualquer ( Login: adm | Senha: adm : Privilégio: 1 )

Ao fazer o Login ( Login: adm | Senha: adm )

frmPrincipalAdm

Como foi dado o Acesso total os botões Cadastrar, Alterar e Excluir estão Ativos.

Usuário Comum:

Abra o Banco Access e Adicione um Login e uma Senha qualquer ( Login: fulano | Senha: 123 : Privilégio: 0 )

Ao fazer o Login ( Login: fulano | Senha: 123 )

frmPrincipalCom

Já o Usuário comum tem apenas acesso ao botão Cadastrar ficando os botões Alterar e Excluir desativados.

Login ou Senha Errada:

Caso o Login ou a Senha estiverem errados irá exibir a mensagem de erro.

LoginSenhaErrada


Criando Log de entrada e saída do usuário:

Caso queria registrar a entrada e saída do usuário no sistema.

Crie a tabela tbLog

Tabela Log

tblog

Abra o DataModule com ( SHIFT + F12 ) e adicione os componentes das Paletas: dbGo e Data Access:

ComponenteInstruções
ADOTableRenomeie para (tbLog) ; Conecte ao ADOConnection e na propriedade TableName escolha a tabela tbLog
DataSourceRenomeie para (dsLog); Conecte em Database para ADOTable

DM.tbLogin

Ative o ADOTable (tbLog) para True.

De um duplo clique em ADOTable (tbLog):

Clique com o Botão Direito do Mouse dentro da janela que ira abrir » Add all Fields

dm-log

Adicionando o Código no btnAcessar no Formulário de Login com registro de log de entrada:

No Button btnAcessar do frmPrincipal de um duplo clique e adicione o código abaixo para salvar a entrada do usuário no sistema:

DM.ADOQuery.Close;
DM.ADOQuery.SQL.Text := 'SELECT * FROM tbLogin WHERE Login = "'+edtLogin.Text+'" and Senha = "'+edtSenha.Text+'"';
DM.ADOQuery.Open;
  if DM.ADOQuery.RecordCount > 0 then
  begin
    frmPrincipal.Show;
    frmLogin.Visible := False;
  end
else
begin
  ShowMessage('Login ou Senha Errada!');
  edtLogin.SetFocus;
end;
    //*********** Inicio Log do Usuário Acesso ***********
    DM.tbLog.Open;
    DM.tbLog.Last;
    DM.tbLog.Insert; // Modo de Inserção
    DM.tbLogUsuario.Value := edtLogin.Text;
    DM.tbLogDataHoraAcesso.Value := Date + Time; // Salva a log na entrada do usuário
    DM.tbLog.Post;
    //*********** Fim Log do Usuário Acesso ***********
end;

No evento OnClose do frmPrincipal adicione o código abaixo para salvar a saída do usuário do sistema:

//*********** Inicio Log do Usuário Saída ***********
DM.tbLog.Open;
DM.tbLog.Last;
DM.tbLog.Edit; // Modo de Edição para altera o ultimo registro
DM.tbLogDataHoraSaida.Value := Date + Time; // Salva a log na saída do usuário
DM.tbLog.Post;
//*********** Inicio Log do Usuário Saída ***********
//* Encerra a Aplicação
Application.Terminate;

Protegendo Banco:

Para proteger o banco recomenda-se utilizar uma criptografia da senha ou apenas definir uma senha no banco Access. Se já definiu uma senha no banco poderá abri-lo conforme procedimento abaixo:

Carregar Banco Access com Senha no Delphi

Etiquetas
Botão Voltar ao topo