Controle de permissões via TMainMenu
fiz um sistema proprio de controle de usuários, porem a rotina de blockeio que criei não esta funcionando.
ela deve percorrer todo os itens do MainMenu, e deixar eles invisíveis caso eles existam no banco, pois eu to salvando no banco os itens que o usuário não tera acesso.. axei mais simples partir deste principio, apenas utilizara mais rows dependendo da situação..
espero que alguem possa me auziliar.
abraço a todos
procedure TFUsers.Blockeia(Menu: TMenuItem); Var X: Integer; Aux: String; begin with DataBase.IBUsers do begin Close; SQL.Clear; SQL.Add(´select * from acessos where id_user=´ + QuotedStr(LOGIN_ID_USER)); Open; if (RecordCount = 0) then begin Exit; end; for X := 0 to (Menu.Count - 1) do begin First; while not Eof do begin Aux := Trim(FieldByName(´secao´).AsString); if (Aux = Menu.Items[X].Caption) then begin Menu.Items[X].Visible := False; end; Next; end; if (Menu.Items[X].Count > 0) then begin Blockeia(Menu.Items[X]); end; end; end; end;
ela deve percorrer todo os itens do MainMenu, e deixar eles invisíveis caso eles existam no banco, pois eu to salvando no banco os itens que o usuário não tera acesso.. axei mais simples partir deste principio, apenas utilizara mais rows dependendo da situação..
espero que alguem possa me auziliar.
abraço a todos
Nightshade
Curtidas 0
Respostas
Nightshade
06/06/2007
estou apanhando nesse problema ainda.. :T
se alguem poder me da uma ajuda agraedço
se alguem poder me da uma ajuda agraedço
GOSTEI 0
Paullsoftware
06/06/2007
Teve uma Edição da clubdelphi que saiu um artigo completo que como fazer isso, vou ver qual foi a Edição e te mando o exemplo blz!
GOSTEI 0
Nightshade
06/06/2007
valeu :D
eu ja fiz todo o sistema de permissoes, cadastro de usuarios, controle de senhas, parte de liberação de seçoes por usuarios.. tudo
apenas preciso de uma rotina q varra todo meu menu, e caso o nome dele for igual o da atual row do banco, ele deixe invisível.
isto ai servira para usuarios q nao tem acesso a determinadas seçoes nao poderem se dar permissao em areas inacessiveis e nem cadastrar novos usuarios com mais nivel q ele..
bolei tudo ja ;P
mas lança a ediçao da revista, derrepente tenha isso nela..
vlw
eu ja fiz todo o sistema de permissoes, cadastro de usuarios, controle de senhas, parte de liberação de seçoes por usuarios.. tudo
apenas preciso de uma rotina q varra todo meu menu, e caso o nome dele for igual o da atual row do banco, ele deixe invisível.
isto ai servira para usuarios q nao tem acesso a determinadas seçoes nao poderem se dar permissao em areas inacessiveis e nem cadastrar novos usuarios com mais nivel q ele..
bolei tudo ja ;P
mas lança a ediçao da revista, derrepente tenha isso nela..
vlw
GOSTEI 0
Logam
06/06/2007
Voce dice que ja desenvolveu tudo só falta uma rotina!!
Voce conhece o componente User Control??
Ele faz tudo isso que vc falou e precisa e muito mais tem varios recursos entre ele envio de mensagens internas entre os usuarios cadastrados no sistema envio de e-mail com a senha do usuario quando ele esquecer da mesma mediante confirmação é claro!!
e é compativel com varios bancos de dados diferentes
o site oficial é [url]www.usercontrol.net[/url]
e o componete é open source!!
vale a pena conhecer!!
apenas uma sugestão!!
Voce conhece o componente User Control??
Ele faz tudo isso que vc falou e precisa e muito mais tem varios recursos entre ele envio de mensagens internas entre os usuarios cadastrados no sistema envio de e-mail com a senha do usuario quando ele esquecer da mesma mediante confirmação é claro!!
e é compativel com varios bancos de dados diferentes
o site oficial é [url]www.usercontrol.net[/url]
e o componete é open source!!
vale a pena conhecer!!
apenas uma sugestão!!
GOSTEI 0
Paullsoftware
06/06/2007
valeu :D
eu ja fiz todo o sistema de permissoes, cadastro de usuarios, controle de senhas, parte de liberação de seçoes por usuarios.. tudo
apenas preciso de uma rotina q varra todo meu menu, e caso o nome dele for igual o da atual row do banco, ele deixe invisível.
isto ai servira para usuarios q nao tem acesso a determinadas seçoes nao poderem se dar permissao em areas inacessiveis e nem cadastrar novos usuarios com mais nivel q ele..
bolei tudo ja ;P
mas lança a ediçao da revista, derrepente tenha isso nela..
vlw
pronto ta ai os exemplos da Revista, foi a Edição 76.. controle de acesso com Emerson Valoco
https://www.devmedia.com.br/clubedelphi/downloads/Ed_76.htm
Voce dice que ja desenvolveu tudo só falta uma rotina!!
Voce conhece o componente User Control??
Ele faz tudo isso que vc falou e precisa e muito mais tem varios recursos entre ele envio de mensagens internas entre os usuarios cadastrados no sistema envio de e-mail com a senha do usuario quando ele esquecer da mesma mediante confirmação é claro!!
e é compativel com varios bancos de dados diferentes
o site oficial é www.usercontrol.net
e o componete é open source!!
vale a pena conhecer!!
apenas uma sugestão!!
é legal ter um componente pra fazer tudo isso que o UserControl faz, eu conheço ele já fiz alguns testes, mais não acho legal ter um componente que faça todo esse controle pra mim, o legal é usar a ideia dele e criar suas proprias regras, por exemplo... digamos que seu cliente está bastanten satisfeito e até acostumado com esse comonente já, daí ele diz pra vc... Programador, eu gostaria que o os usuários comuns n vissem o valor de custo do produtos e tb queria que apenas eu quando desse dois cliques em determinado Grid aparece isso ou aquilo, com vc fazendo o controle de acesso é bem mais simples de implementar isso não acha?GOSTEI 0
Emerson Nascimento
06/06/2007
veja se essa rotina ajuda:
note que agora deve ser passado o próprio menu como parâmetro da rotina Bloqueia.
procedure TForm1.Bloqueia(Menu: TMainMenu); var x: Integer; procedure BloqueiaItensMenu(Item: TMenuItem); var iItem: integer; begin for iItem := 0 to Item.Count-1 do begin Item[iItem].Visible := not DataBase.IBUsers.Locate(´Secao´, Item[iItem].Caption, [loCaseInsensitive]); // se um item estiver invisível, nem analiso os sub-itens if Item[iItem].Visible and (Item[iItem].Count > 0) then BloqueiaItensMenu(Item[iItem]) end; end; begin with DataBase.IBUsers do begin Close; SQL.Clear; SQL.Add(´select * from acessos where id_user=´ + QuotedStr(LOGIN_ID_USER)); Open; // para melhorar a performance, não use (RecordCount = 0) // a menos que você precise saber o número exato de registros if not IsEmpty then for X := 0 to (Menu.Items.Count - 1) do begin Menu.Items[X].Visible := not Locate(´Secao´, Menu.Items[X].Caption, [loCaseInsensitive]); // se um item estiver invisível, nem analiso os sub-itens if Menu.Items[X].Visible and (Menu.Items[X].Count > 0) then BloqueiaItensMenu(Menu.Items[X]); end; end; end;
note que agora deve ser passado o próprio menu como parâmetro da rotina Bloqueia.
GOSTEI 0
Martins
06/06/2007
Um bom código [b:2bf1f5be93]Emerson[/b:2bf1f5be93], uma busca recursiva resolve o problema.
Bons códigos!!
Bons códigos!!
GOSTEI 0
Nightshade
06/06/2007
cara funciono perfeito
valeu [b:6a31007596]emerson.en[/b:6a31007596] :D
valeu [b:6a31007596]emerson.en[/b:6a31007596] :D
GOSTEI 0
Frederico Brigatte***
06/06/2007
Qual versão é do Banco de Dados? Teria como fazer para MySql ou similar?
GOSTEI 0
Jose Maria
06/06/2007
cara funciono perfeito
valeu [b:6a31007596]emerson.en[/b:6a31007596] :D
cara to precisando fazer um controle de permissoes...vc poderia me ajudar...?
valeu [b:6a31007596]emerson.en[/b:6a31007596] :D
GOSTEI 0
Frederico Brigatte***
06/06/2007
Poderia me mandar um exemplo desse? Estou precisando fazer um Controle de Permissão também.
GOSTEI 0
Frederico Brigatte***
06/06/2007
nightshade,
Teria como me ajudar a fazer esse Controle?
Teria como me ajudar a fazer esse Controle?
GOSTEI 0