Fórum Limitar usuários #403516
22/06/2011
0
É isso.

Frederico Brigatte***
Curtir tópico
+ 0Posts
22/06/2011
Eliel Martins
Não entendi, você está afirmando se é dessa forma que tem que fazer ?, caso seja isso que queira saber, o controle de usuário é sim feito dessa forma, agora um dica que deixo para você é que existe um componente muito bom chama UserControl, que faz tudo isso, tem criptografia de senha utilizando MD5, execelente componente é alem do mais ele é free.
Espero ter ajudado, se não te ajudei, por favor detalhe mais o que deseja.
Eliel G. Martins
Gostei + 0
22/06/2011
Frederico Brigatte***
Não entendi, você está afirmando se é dessa forma que tem que fazer ?, caso seja isso que queira saber, o controle de usuário é sim feito dessa forma, agora um dica que deixo para você é que existe um componente muito bom chama UserControl, que faz tudo isso, tem criptografia de senha utilizando MD5, execelente componente é alem do mais ele é free.
Espero ter ajudado, se não te ajudei, por favor detalhe mais o que deseja.
Eliel G. Martins
É como se fosse usar o UserControl, só que com componentes nativos do delphi mesmo. Estou com dificuldade em utilizar o UserControl.
Gostei + 0
22/06/2011
Eliel Martins
Se você interessar eu tenho algumas video aulas de como utilizar o UserControl, ele não é complicado não, se quiser mando no seu e-mail, só me passar seu e-mail que te envio hoje a noite. Também existe um controle de usuário da TMS que parece ser muito bom.
Eliel G. Martins
Gostei + 0
22/06/2011
Frederico Brigatte***
Se você interessar eu tenho algumas video aulas de como utilizar o UserControl, ele não é complicado não, se quiser mando no seu e-mail, só me passar seu e-mail que te envio hoje a noite. Também existe um controle de usuário da TMS que parece ser muito bom.
Eliel G. Martins
Ok, meu email é: frederico.brigatte@itelefonica.com.br
Qual é esse da TMS, é free, onde baixar? Tem exemplo?
Gostei + 0
24/06/2011
Frederico Brigatte***
Se você interessar eu tenho algumas video aulas de como utilizar o UserControl, ele não é complicado não, se quiser mando no seu e-mail, só me passar seu e-mail que te envio hoje a noite. Também existe um controle de usuário da TMS que parece ser muito bom.
Eliel G. Martins
Ok, meu email é: frederico.brigatte@itelefonica.com.br
Qual é esse da TMS, é free, onde baixar? Tem exemplo?
Bom dia Eliel, vc não enviou pra mim.
Gostei + 0
25/06/2011
Anderson Nunes
Gostei + 0
25/06/2011
Frederico Brigatte***
Teria como fazer um exemplo, nunca fiz isso. Estou com dificuldades. E empacado nisso.
Gostei + 0
25/06/2011
Anderson Nunes
Gostei + 0
25/06/2011
Frederico Brigatte***
Quer meu email? Agradeço por enquanto.
frederico.brigatte@itelefonica.com.br
Gostei + 0
26/06/2011
Adalton Goncalves
http://www.linhadecodigo.com.br/artigo/822/Delphi-Controle-de-AcessoTreeView-para-gerenciamento-de-usu%C3%A1rios.aspx
Gostei + 0
27/06/2011
Frederico Brigatte***
http://www.linhadecodigo.com.br/artigo/822/Delphi-Controle-de-AcessoTreeView-para-gerenciamento-de-usu%C3%A1rios.aspx
Ok, aguardo. Obrigado por hora, ok. Muito obrigado.
Gostei + 0
27/06/2011
Adalton Goncalves
Vamos supor que seu sistema tenha 3 níveis de acesso.
Nivel 1 - Mínimo (funções básicas. Ex: Apenas Consulta)
Nivel 2 - Intermediário(todas do N1, mais algumas. Ex: Inclusão)
Nivel 3 - Total (Todas acima, mais inclusão e alteração)
Na propriedade tag do menu(ou o que estiver controlando(forms, botões, etc) você define qual o nível necessário para acessar essa função. No cadastramento do usuario (na tabela) você teria a indicação sobre qual nível de acesso esse usuário tem, baseando nos níveis cadastrados no sistema, ou seja 1 menor acesso à 3 nível administrador.
A implementação pode ser feita de várias formas, no caso de controle no Menu(depende muito da sua necessidade), a cada clique no menu poderia fazer a verificação:
1 2 3 4 5 6 7 8 9 10 | procedure TForm1.MnuCadastroClick(Sender :TObject); begin if Nivel_Usuario < (Sender as TMenuItem).Tag then begin ShowMessage('Você não possui autorização para acessar esta função!'); Exit; // Encerra execução do procedimento end // segue com o código normalmente ... end; |
Mas também, você poderia, "após validar o usuário", verificar todos os seus itens de menu e ocultá-los caso o nível de acesso do usuário fosse inferior ao valor da tag dos mesmos e, neste caso, não seria necessário fazer as validações.
Exemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | // Procedimento para "mapear" todos os itens do menu procedure SetMenuAccess(Menu :TMenuItem; AccessLevel :Integer); var Idx :Integer; begin for Idx := 0 to Menu.Count -1 do begin // habilita ou não item conforme nível de acesso configurado Menu.Items[Idx].Enabled := Menu.Items[Idx].Tag <= AccessLevel; // apenas se habilitado é que processa os sub-menus if Menu.Items[Idx].Enabled then SetMenuAccess(Menu.Items[Idx], AccessLevel); end; end; |
ou entao caso os bloqueios sejam internos (exemplo: o usuario pode abrir o form, mas alguns botoes depende dos privilégios) faça o mesmo procedimento acima de varredura, mas defina no evento onCreate do form, para que ao criar o form ele já defina o que vai estar visible (ou enabled).
Espero ter ajudado.
Qualquer duvida, estou a disposição.
Gostei + 0
27/06/2011
Frederico Brigatte***
Vamos supor que seu sistema tenha 3 níveis de acesso.
Nivel 1 - Mínimo (funções básicas. Ex: Apenas Consulta)
Nivel 2 - Intermediário(todas do N1, mais algumas. Ex: Inclusão)
Nivel 3 - Total (Todas acima, mais inclusão e alteração)
Na propriedade tag do menu(ou o que estiver controlando(forms, botões, etc) você define qual o nível necessário para acessar essa função. No cadastramento do usuario (na tabela) você teria a indicação sobre qual nível de acesso esse usuário tem, baseando nos níveis cadastrados no sistema, ou seja 1 menor acesso à 3 nível administrador.
A implementação pode ser feita de várias formas, no caso de controle no Menu(depende muito da sua necessidade), a cada clique no menu poderia fazer a verificação:
1 2 3 4 5 6 7 8 9 10 | procedure TForm1.MnuCadastroClick(Sender :TObject); begin if Nivel_Usuario < (Sender as TMenuItem).Tag then begin ShowMessage('Você não possui autorização para acessar esta função!'); Exit; // Encerra execução do procedimento end // segue com o código normalmente ... end; |
Mas também, você poderia, "após validar o usuário", verificar todos os seus itens de menu e ocultá-los caso o nível de acesso do usuário fosse inferior ao valor da tag dos mesmos e, neste caso, não seria necessário fazer as validações.
Exemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | // Procedimento para "mapear" todos os itens do menu procedure SetMenuAccess(Menu :TMenuItem; AccessLevel :Integer); var Idx :Integer; begin for Idx := 0 to Menu.Count -1 do begin // habilita ou não item conforme nível de acesso configurado Menu.Items[Idx].Enabled := Menu.Items[Idx].Tag <= AccessLevel; // apenas se habilitado é que processa os sub-menus if Menu.Items[Idx].Enabled then SetMenuAccess(Menu.Items[Idx], AccessLevel); end; end; |
ou entao caso os bloqueios sejam internos (exemplo: o usuario pode abrir o form, mas alguns botoes depende dos privilégios) faça o mesmo procedimento acima de varredura, mas defina no evento onCreate do form, para que ao criar o form ele já defina o que vai estar visible (ou enabled).
Espero ter ajudado.
Qualquer duvida, estou a disposição.
Para os níveis de acesso, preciso criar uma tabela? Teria como montar um exemplo para que possa adaptar?
Gostei + 0
28/06/2011
Frederico Brigatte***
Vamos supor que seu sistema tenha 3 níveis de acesso.
Nivel 1 - Mínimo (funções básicas. Ex: Apenas Consulta)
Nivel 2 - Intermediário(todas do N1, mais algumas. Ex: Inclusão)
Nivel 3 - Total (Todas acima, mais inclusão e alteração)
Na propriedade tag do menu(ou o que estiver controlando(forms, botões, etc) você define qual o nível necessário para acessar essa função. No cadastramento do usuario (na tabela) você teria a indicação sobre qual nível de acesso esse usuário tem, baseando nos níveis cadastrados no sistema, ou seja 1 menor acesso à 3 nível administrador.
A implementação pode ser feita de várias formas, no caso de controle no Menu(depende muito da sua necessidade), a cada clique no menu poderia fazer a verificação:
1 2 3 4 5 6 7 8 9 10 | procedure TForm1.MnuCadastroClick(Sender :TObject); begin if Nivel_Usuario < (Sender as TMenuItem).Tag then begin ShowMessage('Você não possui autorização para acessar esta função!'); Exit; // Encerra execução do procedimento end // segue com o código normalmente ... end; |
Mas também, você poderia, "após validar o usuário", verificar todos os seus itens de menu e ocultá-los caso o nível de acesso do usuário fosse inferior ao valor da tag dos mesmos e, neste caso, não seria necessário fazer as validações.
Exemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | // Procedimento para "mapear" todos os itens do menu procedure SetMenuAccess(Menu :TMenuItem; AccessLevel :Integer); var Idx :Integer; begin for Idx := 0 to Menu.Count -1 do begin // habilita ou não item conforme nível de acesso configurado Menu.Items[Idx].Enabled := Menu.Items[Idx].Tag <= AccessLevel; // apenas se habilitado é que processa os sub-menus if Menu.Items[Idx].Enabled then SetMenuAccess(Menu.Items[Idx], AccessLevel); end; end; |
ou entao caso os bloqueios sejam internos (exemplo: o usuario pode abrir o form, mas alguns botoes depende dos privilégios) faça o mesmo procedimento acima de varredura, mas defina no evento onCreate do form, para que ao criar o form ele já defina o que vai estar visible (ou enabled).
Espero ter ajudado.
Qualquer duvida, estou a disposição.
Para os níveis de acesso, preciso criar uma tabela? Teria como montar um exemplo para que possa adaptar?
Não entendi bem esse código, desculpe. Precisa montar uma tabela?
Gostei + 0
28/06/2011
Adalton Goncalves
Para os níveis de acesso, preciso criar uma tabela? Teria como montar um exemplo para que possa adaptar?
Não entendi bem esse código, desculpe. Precisa montar uma tabela?
Ahh sim, perdão pela demora em responder, me enrolei num projeto aqui.
A quesão chave aqui, é o "controle de usuário", na tabela de usuário, voce deve definir um campo para este controle. Com o uso da tag dos componentes, um campo Nivel_Usuario sendo Integer já resolve o problemas aí sim, este campo recebe os valores de acesso.
Seguindo aquele exemplo:
Vamos supor que seu sistema tenha 3 níveis de acesso.
Nivel 1 - Mínimo (funções básicas. Ex: Apenas Consulta)
Nivel 2 - Intermediário(todas do N1, mais algumas. Ex: Inclusão)
Nivel 3 - Total (Todas acima, mais inclusão e alteração)
Ou seja o admin vai receber no field da tabela user Nivel_User o valor 3, e assim por diante.
se caso o bloqueio de comando for ao clicar no menu, que nem o primeiro exemplo:
1 2 3 4 5 6 7 8 9 10 | procedure TForm1.MnuCadastroClick(Sender :TObject); begin if Nivel_Usuario < (Sender as TMenuItem).Tag then begin ShowMessage('Você não possui autorização para acessar esta função!'); Exit; // Encerra execução do procedimento end // segue com o código normalmente ... end; |
Este if está verificando o field Nivel_Usuario da tabela.
Já no segundo exemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | // Procedimento para "mapear" todos os itens do menu procedure SetMenuAccess(Menu :TMenuItem; AccessLevel :Integer); var Idx :Integer; begin for Idx := 0 to Menu.Count -1 do begin // habilita ou não item conforme nível de acesso configurado Menu.Items[Idx].Enabled := Menu.Items[Idx].Tag <= AccessLevel; // apenas se habilitado é que processa os sub-menus if Menu.Items[Idx].Enabled then SetMenuAccess(Menu.Items[Idx], AccessLevel); end; end; |
Aqui está lendo todos os menus, para poder desabilitar aqueles em que o usuário não é autorizado a ver, para isso ele verifica novamente o field Nivel_Usuario da tabela e chama a procedure enviando o valor deste campo como AccessLevel.
Entao eis a questao, o sistema irá iniciar somente após o usuario colocar seu login e senha, que vai ser verificado na tabela, assim que foi autenticado, e antes de iniciar o form(entao esse procedimento deve estar no onCreate), ele irá verificar o Nivel_Usuario e chamar a procedure. Ou melhor ainda, pensando aqui, de maneira breve, ao invés de camar o procedimento, faz isso na procedure OnCreate mesmo, envia as info do user para uma variável global(isso deve ser feito de qualquer forma), e faz a verificação da variável com as tag.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)