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.

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

Frost

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.

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

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar