Fórum Controlando o acesso #442200

08/05/2013

0

Vi o artigo [url]https://www.devmedia.com.br/artigo-clube-delphi-edicao-19-controlando-o-acesso/13185[/url] que fala sobre controle de acesso.

No final do artigo, o autor menciona criar um campo na tabela ACESSO contendo a descrição do objeto, porque é possível que um objeto com o nome de "btnIncluir" possa estar presente em vários formulários. Aí vem a dúvida, preciso criar mais campos, por exemplo, para os demais botões: btnExcluir, btnAlterar, btnPesquisar?

Menciona também criar um formulário onde o usuário possa dar a manutenção nas permissões (tabela ACESSO), ou seja, permitir ou não que determinado perfil tenha acesso a um determinado campo, etc.
Como poderia ser esse formulário?

Frederico Brigatte***

Frederico Brigatte***

Responder

Posts

09/05/2013

Frederico Brigatte***

Alguém para ajudar?
Responder

Gostei + 0

09/05/2013

Frederico Brigatte***

Tabela USUARIOS:

USR_ID
USR_LOGIN
USR_NOME
USR_SENHA
ACS_PERFIL


Tabela ACESSO:

ACS_ID
ACS_GRUPO
ACS_SUBGRUPO
ACS_PERFIL
ACS_ENABLED
ACS_VISIBLE

Na tabela ACESSO o autor menciona sobre os botões, como INCLUIR, ALTERAR, EXCLUIR, CONSULTA. Criar 4 campos referentes aos botões: btnIncluir, btnAlterar, btnExcluir, btnConsulta?

Para que serve os campos ACS_GRUPO e ACS_SUBGRUPO?


Responder

Gostei + 0

09/05/2013

Wilton Júnior

se tiver bolequeando a o menu como vc quer grupo é o menu e subgrupo o submenu
tipo arquivo (menu ou grupo) e depois novo (submenu ou subgrupo) :P
Responder

Gostei + 0

09/05/2013

Frederico Brigatte***

Vc chegou a olhar o artigo?
Responder

Gostei + 0

09/05/2013

Frederico Brigatte***

Aqui tá explicando:

O campo ACS_GRUPO serve para armazenar o nome do formulário.
O campo ACS_SUBGRUPO serve para armazenar o nome do objeto que está associado ao formulário.
O campo ACS_ENABLED trabalha armazenando a possibilidade do usuário ter este objeto habilitado (valor "S") ou não (valor "N")

No campo ACS_GRUPO gravo o nome do formulário, exemplo: frmCadastro_Clientes. No campo ACS_SUBGRUPO, gravaria os botões que quero controlar, exemplo: btnIncluir, btnAlterar, btnExcluir e btnConsultar.

Uma dúvida, onde na procedure ArmazenaAcesso saberia em qual formulário estou? Onde é gravado o nome do form na tabela?
Responder

Gostei + 0

09/05/2013

Alisson Santos

gostaria de saber se a solução apresentada lhe auxiliou.
Responder

Gostei + 0

09/05/2013

Frederico Brigatte***

Voltando para Tabela ACESSO:

ACS_ID
ACS_GRUPO
ACS_SUBGRUPO
ACS_PERFIL
ACS_ENABLED
ACS_VISIBLE

Poderia haver uma outra tabela apenas para o perfil. Exemplo:

Tabela PERFIL

PFL_ID
PFL_PERFIL

A Tabela ACESSO, ficaria assim:

ACS_ID
ACS_GRUPO
ACS_SUBGRUPO
PFL_ID
ACS_ENABLED
ACS_VISIBLE

Correto isso?
Responder

Gostei + 0

09/05/2013

Wilton Júnior

nao é nao
grupo é frmprincipal.pas?
subgrupo TForm
isso?
Responder

Gostei + 0

09/05/2013

Frederico Brigatte***

entra la no face, conversamos la
Responder

Gostei + 0

09/05/2013

Frederico Brigatte***

Alisson,

Estou tentando montar as tabelas. Não entendi direito a parte do Grupo, SubGrupo. O autor menciona adicionar um campo na tabela ACESSO contendo a descrição do objeto, porque é possível que um objeto com o nome de "btnIncluir" possa estar presente em vários formulários.

Mas esses dois campos GRUPO e SUBGRUPO já não fazem isso, como diz:

O campo ACS_GRUPO serve para armazenar o nome do formulário, assim como o campo ACS_SUBGRUPO serve para armazenar o nome do objeto que está associado ao formulário.



Responder

Gostei + 0

09/05/2013

Joel Rodrigues

Frederico, se você observar o código do método onde os dados são salvos na tabela, verá que o campo ACS_GRUPO recebe o NOME DO FORM e o campo ACS_SUBGRUPO recebe o NOME DO COMPONENTE.
Ou seja, o grupo é utilizado para filtrar os controles de acesso de cada formulário, enquanto o subgrupo é para acessar cada componente do form para habilita-lo ou desabilita-lo.
Responder

Gostei + 0

09/05/2013

Frederico Brigatte***

Joel, então posso utilizar o subgrupo para gravar os botões dos forms, certo?
Responder

Gostei + 0

09/05/2013

Joel Rodrigues

Sim, amigo, é exatamente para isso que serve este campo, para gravar o nome do componente. Se você observar o código do artigo citado, está bastante simples de entender o funcionamento.
Responder

Gostei + 0

09/05/2013

Frederico Brigatte***

Joel, montei um banco com as seguintes tabelas:

USUARIOS:

Usuario_Id Auto
Usuario_Nome Texto
Usuario_Login Texto
Usuario_Senha Texto
Perfil_Id Número


PERFIL:

Perfil_Id Auto
Perfil_Descricao Texto


ACESSO:

Acesso_ID Auto
Acesso_Grupo Texto
Acesso_SubGrupo Texto
Perfil_Id Integer
Acesso_Enabled Texto
Acesso_Visible Texto

Estou seguindo o artigo. Criei mais uma tabela Perfil e liguei os campos. Até aí está bom?
Responder

Gostei + 0

09/05/2013

Joel Rodrigues

Sim.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar