Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

alexncosta

Validação no Login

Recommended Posts

Ae Galera preciso de ajuda,Estou com um sistema que quando o usuário o acessa, ele precisa verificar se o usuário está vinculado a algum centro de custo(departamento).A tela de login tem três campos:Centro de CustoLoginSenhaSe o centro de custo que o usuario selecionou estiver vinculado a ele o sistema permite ele acessar os recursos do sistema, se não estiver vinculado o sistema deve informar uma mensagem tipo:O usuario informado naum tem permissão para acessar este Centro de Custo.Alguém pode me ajudar a fazer isso já tentei de diversas formas e naum consegui, se alguem tiver uma idéia de como posso fazer, po favor poste uma mensagem pra mim....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde CameloBr,Em primeiro lugar obrigado por responder, e sim a tabela existe e está da seguinte formaeu tenho três tabelas a 1ª AD_USUARIOS2ª MGL_CENTROS_CUSTO3ª PRT_USUARIOS_X_CENTRO_CUSTOSA tabela PRT_USUARIOS_X_CENTRO_CUSTOS possui os campos CD_USUARIO_CENTRO_CUSTOCD_USUARIO (FK)CD_CENTRO_CUSTO (FK)essa tabela possui uma foreign key ligada a tabela AD_USUARIO e outra ligada a tabela MGL_CENTROS_CUSTO e é com essa estrutura que eu tenho que criar o que expus no post anterior, se você puder me ajudar agradeço muito.Qualquer forma que você souber, por favor se de pra você me enviar o código, agradecerei muito.Alexandre

Compartilhar este post


Link para o post
Compartilhar em outros sites

E aew :D É o seguinte:Eu vejo duas opções para isto, nao sei se cabe a aplicação, mas da forma que voce colocou acho que serve.

Se o centro de custo que o usuario selecionou estiver vinculado a ele o sistema permite ele acessar os recursos do sistema, se não estiver vinculado o sistema deve informar uma mensagem tipo:O usuario informado naum tem permissão para acessar este Centro de Custo.

Vamo lá:Obs: entendi, que a tabela PRT_USUARIOS_X_CENTRO_CUSTOS é a que deve ter os dados necessario para a consulta.Na verdade tudo se resume ao SQL, sendo assim, la vai.1°) Na hora de logar, voce pode fazer a consulta sql direto, mais ou menos da seguinte forma:
SELECT * FROM  PRT_USUARIOS_X_CENTRO_CUSTOS WHERE COD_USUARIO =:COD
no codigo da unit, por exemplo, do onclick do butao "login":
with query doBegin  close;  sql.clear;  sql.add('SELECT * FROM  PRT_USUARIOS_X_CENTRO_CUSTOS WHERE COD_USUARIO =:COD');  paramByName('COD').AsInteger := codigo;  open;  if (query.recordCount <> 0) then    Showmessage('O usuario informado naum tem permissão para acessar este Centro de Custo.')  else    <mostrar form>;end;
Obs: essa variavel codigo, tem que ser declarada como "integer" e tem que conter o codigo do usuario :P Se voce nao fez ainda o login, la vai tb ele.
with query doBegin  close;  sql.clear;  sql.add('SELECT * FROM  AD_USUARIOS WHERE (LOGIN =:login) AND (SENHA =:senha)');  paramByName('login').AsString := editLogin.text;  paramByName('senha').AsString := editSenha.text;;  open;  if query.recordCount = 0 then    Showmessage('O usuario invalido!!!.')  else    codigo := fieldByName('COD_USUARIO').AsInteger;end;
Aqui, logo depois voce adiciona o codigo de consulta para ver se há custo.Entao ficaria +- assim:
procedure form1.buttonLogin blablabla;var  codigo:integer;Beginwith query doBegin  close;  sql.clear;  sql.add('SELECT * FROM  AD_USUARIOS WHERE (LOGIN =:login) AND (SENHA =:senha)');  paramByName('login').AsString := editLogin.text;  paramByName('senha').AsString := editSenha.text;;  open;  if (query.recordCount = 0) then  Begin    Showmessage('O usuario invalido!!!.');    exit;  end  else    codigo := fieldByName('COD_USUARIO').AsInteger;end;with query doBegin  close;  sql.clear;  sql.add('SELECT * FROM  PRT_USUARIOS_X_CENTRO_CUSTOS WHERE COD_USUARIO =:COD');  paramByName('COD').AsInteger := codigo;  open;  if (query.recordCount <> 0) then  Begin    Showmessage('O usuario informado naum tem permissão para acessar este Centro de Custo.');    exit;  end  else    <mostrar form>;end;end; // fim procedure
Esse codigo com certeza poderia ser mais otimizado, mas pra facil compreenção, achei melhor assim.dica: você pode fazer uma função para que sempre verificar se o usuario tem permissao para qualquer ascesso. Essa seria a 2º opção, mais não vou por mais nesse post, fica muito ruim de ler tudo.Faz com esse e testa aew http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Nao testei o codigo, escrevi na hora, entao deve conter uns erros ou nao :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.