Ainda não consegui restringir acesso de usuario

Delphi

08/02/2004

Olá pessoal tentei mais ainda não consegui por que a maioria das dicas que recebi mudava totalmente a maneira de como eu estava fazendo, sei que existe varias formas de fazer isso, mais eu queria em cima desse codigo que eu já uso para acesso ao meu sistema tenho na minha tabela codigo usuario senha e nivel.

Sei a logica mais não sei como fazer por não dominar ainda bem o uso do if e else que acredito que seja por ai que vai se fazer.

Tipo, se tem no menu cadastro = cliente, Fornecedor, livro caixa, contas a pagar

se o usuario tiver nivel 1 ele acessa todo o menu cadastro
se o usuario tiver nivel 2 ele acessa apenas cliente e fornecedor o livro caixa e contas a pagar fica desabilitado

Mais eu queria essas melhorias em cima do meu codigo abaixo, e possivel?

[color=blue:1a456d7c7a]1º No botão OK tem o seguinte
procedure Tformlogin.BitBtn1Click(Sender: TObject);
begin
if not tabelaUsuario.Locate(´senha;login´,vararrayof([editsenha.Text,editusuario.text]),[]) then
begin
Application.MessageBox(´Ops! Usuario e/ou senha não autorizados!´,´Atenção!´,mb_iconStop+mb_ok);
editsenha.clear;
editusuario.SetFocus;
editusuario.SelStart:=0;
exit;
end
else
begin
fechar:=1;
close;
end; [/color:1a456d7c7a]
Alguem pode me ajudar?[img][/img]


Wagner

Wagner

Curtidas 0

Respostas

Wagner

Wagner

08/02/2004

IF ate agora ´Nada´ then sobe


GOSTEI 0
Godzilla_xf

Godzilla_xf

08/02/2004

[b:027612926e]Como vc esta querendo restringir o acesso aos forms pelos menus desabilitando-os ou de outra forma se for pelos menus tente fazer isso.[/b:027612926e]

No evento OnClique do botão de entrar faça:

if (UserName.text = TabUsuarioUserName.value) and (Senha.text = TabUsuarioSenha.value) and (TabUsuarioNivel.value = ´Administrador´) then
begin
Todos_os_menus.enable := true;
end
else
if (UserName.text = TabUsuarioUserName.value) and (Senha.text = TabUsuarioSenha.value) and (TabUsuarioNivel.value = ´Digitador´) then
begin
os_menus_que_quiser.enabled := true;
e_os_outros.enabled := false;
end
else
if (UserName.text = TabUsuarioUserName.value) and (Senha.text = TabUsuarioSenha.value) and (TabUsuarioNivel.value = ´Gerencia´) then
begin
Abilita_os_menus_que_vc_quiser.enabled := true;
e_os_outros.enabled := false;
end
else
application.messageBox(´Atenção, UserName ou Senha invalidos.´,´Aviso de erro´, mb_ok + mb_iconError);

[b:027612926e]não sei c é isso que vc quer mais derepente com esse exemplo simples vc possa tirar algo de util qualquer coisa me fala manda mp.

espero ter ajudado.[/b:027612926e]

falow


GOSTEI 0
Fabio.hc

Fabio.hc

08/02/2004

Outra dica é:

No MainMenu1 vc coloca na propriedade tag do itens o seguinte:
Cliente1.tag = 2;
Fornecedor1.tag = 2;
LivroCaixa1 = 1;
ContasaPagar1 = 1;

Quando o usuário logar no sistema vc coloca a variavel nivel com o nivel do usuário, exemplo:
-nivel:=1 so acessa onde tag for 1 ou maior.
-nivel:=2 so acessa onde tag for 2 ou maior.

procedure Tformlogin.BitBtn1Click(Sender: TObject);
begin
   if not tabelaUsuario.Locate(´senha;login´,vararrayof([editsenha.Text,editusuario.text]),[]) then
      begin
      Application.MessageBox(´Ops! Usuario e/ou senha não autorizados!´,´Atenção!´,mb_iconStop+mb_ok);
      editsenha.clear;
      editusuario.SetFocus;
      editusuario.SelStart:=0; 
      exit;
      end
   else
      begin
      fechar:=1;
      nivel:=(nivel do usuario); <- 
      close;
      end;
end;

procedure TForm1.Cliente1Click(Sender: TObject);
begin
   if Nivel > Cliente1.Tag then
      ShowMessage(´Usuário não tem permissão´)
   else
     ... 
end;

procedure TForm1.Fornecedor1Click(Sender: TObject);
begin
   if Nivel > Fornecedor1.Tag then
      ShowMessage(´Usuário não tem permissão´)
   else
     ... 
end;

procedure TForm1.LivroCaixa1Click(Sender: TObject);
begin
   if Nivel > LivroCaixa1.Tag then
      ShowMessage(´Usuário não tem permissão´)
   else
     ... 
end;

procedure TForm1.ContasaPagar1Click(Sender: TObject);
begin
   if Nivel > ContasaPagar1.Tag then
      ShowMessage(´Usuário não tem permissão´)
   else
     ... 
end;



GOSTEI 0
POSTAR