Fórum Nivel - Login #386070
10/09/2010
0
Boa Tarde
Deu um branco agora tenho os seguinte cod para login, gostaria de tambem consultar o NIVEL do usuario e se
for ADM tem acesso total, se for USER libero acesso somento em algumas telas.
Grato
Deu um branco agora tenho os seguinte cod para login, gostaria de tambem consultar o NIVEL do usuario e se
for ADM tem acesso total, se for USER libero acesso somento em algumas telas.
procedure TFormLogin.BTlogarClick(Sender: TObject);
var
Status : string;
begin
DM.Q_user.Close;
DM.Q_user.SQL.Clear;
DM.Q_user.SQL.Add('select * from USUARIO where LOGIN = :Vnome and SENHA = :vSenha');
DM.Q_user.Params[0].Value := EDTlogin.Text;
DM.Q_user.Params[1].Value := EDTsenha.Text;
DM.Q_user.Open;
usuario := EDTlogin.Text;
FALogin := usuario;
if (DM.Q_user.RecordCount)= 1 then
begin
Status := 'Ativo'; // se está ativo ou não
DM.Q_user.SQL.Add('and STATUS = '+#39 + S + #39);
DM.Q_user.Open;
if (DM.Q_user.RecordCount)= 1 then
begin
FormLogin.Visible := False;
Application.CreateForm(TFormprincipal, Formprincipal);
Formprincipal.Logoff1.Caption := 'Logoff de : ' +DM.Q_user.FieldByName('LOGIN').AsString;
Formprincipal.Logoff1.Hint := 'Logoff de : ' +DM.Q_user.FieldByName('LOGIN').AsString;
Formprincipal.suiStatusBar1.Panels[0].Text := ' ' + 'Usuario : '+ usuario;
Formprincipal.ShowModal;
FormLogin.Close;
end
else
shomessage('Usuario Inativo ' + #13+ 'Consulte o Administrador do Sistema');
Abort;
end
else
begin
shomessage('Nome ou senha do usuário inválidos');
EDTsenha.Text := '';
EDTlogin.SetFocus;
end;
end;
end;
end;
end.
Grato
Frost
Curtir tópico
+ 0
Responder
Posts
10/09/2010
Eriley Barbosa
Você tem que ter uma outra tabela para relacionar o nivel com as telas, tipo:
Nome da tabela: Nivel_tela
ID campo que deve ser auto incrementavel,
cod_usuario integer,
Nivel Integer,
nome_form Varchar(20);
Ai quando o usuario clicar em uma opção de menu:
Você já de posse do nivel e do codigo do usuario, já que ele vai estar logado e essa informação você tem na tabela usuario mais o name do for faz um select nesta nova tabela pesquisando pelo cod_usuario, nivel e name do form que está tentando abrir, se retornar um registro tem acesso caso contrario emite uma mensagem e aborta o carregamento da tela.
Responder
Gostei + 0
10/09/2010
Frost
Boa tarde
Eriley
É ai que tá o X da questão a tabela que tenho em mãos tem todos esses campos numa tabela só e tem um monte de usuario ja cadastrado, estou fazendo uma mantenção nesse sistema antigo da empresa, até eu terminar um novo sistema.
TB_user
Cod
Nome
End
Tel
bairr
Cidad
Est
Email
login
senha
status // campo se esta ativo ou não
Nivel // adm ou usuario
Mas enfim fiz uma gambiarra que não é o certo mas a fim de me salvar por esse final de semana já está bom.
Eriley
É ai que tá o X da questão a tabela que tenho em mãos tem todos esses campos numa tabela só e tem um monte de usuario ja cadastrado, estou fazendo uma mantenção nesse sistema antigo da empresa, até eu terminar um novo sistema.
TB_user
Cod
Nome
End
Tel
bairr
Cidad
Est
login
senha
status // campo se esta ativo ou não
Nivel // adm ou usuario
Mas enfim fiz uma gambiarra que não é o certo mas a fim de me salvar por esse final de semana já está bom.
procedure TFormprincipal.FormCreate(Sender: TObject);
if (DM.Q_user.FieldByName('NIVEL').AsString = 'Usuario') then
begin
Clientes1.Enabled := False; // Item MainMenu
end;
end;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)