restringir acesso

04/01/2006

bom eu queria fazer minha aplicação em rede. mas seria assim, os funcionários teriam uma senha para cada um, por exemplo, o funcionario1 tem a senha 123, o funcionario2 tem 456, e assim por diante. o problema surge que, o administrador que cria essas senhas e ele pode restringir o acesso, por exemplo, o funcionario2 não pode ver o relatório do dia, cadastrar clientes, enfim, mas pode outras funções. eu pensei em fazer um form com uma checklist com todos os itens, aí o admin dá o nome da senha e seleciona os itens que o funcionario pode entrar. mas não sei certas coisas:

onde será guardada a senha?

outra: eu pensei que quando ele restringe acesso a algumas funções, ele ir tirando do menu, por exemplo, se senha = 456, relatorios.visible := false, onde relatorios é um submenu do mainmenu. mas como eu poderia fazer essa verificação e ele saber que tais menus devem ser apagados dependendo da senha?

preciso de uma luz. alguem poderia me ajudar?


Aspirante

Respostas

04/01/2006

Caninha51

Eu faço assim.

Tenho uma tabela de menus, onde adiciono o nome de todos os menus do meu sistema e sua descrição. O nome eh o do TMenuItem mesmo.
Tenho outra tabela de acessos com os campos Usuario e Menu.
Ai nela eu associo as permissão de cada usuário.

Pra facilitar eu criei uma telinha onde listo todos os menus de um lado e do outro os usuários, que são criados no próprio banco.

Depois q o usuário se loga no sistema verifico as permissoes dele na tabela de acessos e libero os menus que ele pode acessar.

Criei uma função pra facilitar a consulta...
function TfrmPri.Consultar(Instrucao: string): Boolean;
begin
  qryAux.SQL.Clear;
  qryAux.SQL.Add(Instrucao);
  qryAux.Open;
  Result := not qryAux.IsEmpty;
end;


E dou um loop nos componentes liberando os que ele pode acessar...
      for intI := 0 To ComponentCount - 1 do
        if Components[intI&93; is TMenuItem then
          TMenuItem(Components&91;intI&93;).Enabled := Consultar(
            ´SELECT * FROM ACESSOS WHERE USUARIO = ´ + QuotedStr(UserLogado) +
            ´ AND MENU = ´ + QuotedStr(Components&91;intI&93;.Name));


Pronto, eu faço assim! :D

Deu pra entender mais ou menos?hehe

vlw


Responder Citar