ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Grupos de Acesso

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
didonsom
Novato
Novato


Registrado: Quarta-Feira, 24 de Abril de 2013
Mensagens: 87

MensagemEnviada: Sáb Dez 26, 2015 4:44 pm    Assunto: Grupos de Acesso Responder com Citação

Olá Pessoal, Boa tarde!

Gostaria de uma orientação sobre qual é a melhor forma de criar uma validação de Permissões de acesso para um grupo de usuários.

A validação que desenvolvi no momento, consiste em armazenar os valores como (True e False) em uma tabela chamada grupos acesso.
Por exemplo, se eu quiser bloquear o botão incluir de um form, eu teria nessa tabela, uma coluna com o nome do form e a letra I no final, para identificar que essa coluna refere-se ao botão Incluir e esse campo receberia o valor (True e False), através de um checkbox marcado em tela pelo usuario, mas como existem diversos forms essa tabela do banco de dados acabou ficando extensa... (mais de 50 colunas).

para validar a verificação, no form Principal da aplicação criei procedures separadas para cada form para verificar se o valor do campo é "False" e para bloquear os botões chamo somente a procedure correspondente no ONShow do form que desejo bloquear e em alguns botões para fazer a validação.

abaixo um exemplo de um código de verificação ..
if tabelagrupos_acessofrmteste = Fasle then
begin
botaoteste.enabled := false;

if formteste2 <> nil then
begin
formteste2.botaoteste.enabled := false;
end;
end;

o que queria é otimizar o código e reduzir os campos da tabela, mas não sei bem o que poderia fazer por isso queria uma ajuda.

No form que criei para o usuário criar o grupo, criei ele de uma forma especifica onde o usuário pode selecionar os botões que deseja permitir individualmente para cada form.



Abraços

Diego



Nesse caso existe um melhor modo de fazer essa validação?


Diego
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
Ghost_Rider
Colaborador
Colaborador


Registrado: Segunda-Feira, 6 de Outubro de 2003
Mensagens: 4437

MensagemEnviada: Seg Dez 28, 2015 7:40 am    Assunto: Responder com Citação

Tá...ao inves de ter uma tabela com os campos todos, faça assim:

- em cada form vc tem uma propriedade chamada Tag, que por padrão tem valor 0. Essa propriedade em geral não serve para nada, logo, você pode numerar ela do jeito que precisa...
- crie uma tabela assim :
- id
- idtela
- acessa
- grava
- altera
- exclui
Essa tabela tem o ID que é chave primária, o IDTELA que indica a tela que você quer controlar. No caso, nesse valor vai o numero do form, que você irá alimentar na propriedade TAG do form.
Dai você tem as permissões de acesso, gravação, alteração e exclusão, que tanto pode deixar como string ou integer, a seu gosto.
Quando entrar no form, pega o valor da TAG, vai nesse tabela e pega as permissões, dai armazena em variáveis locais e pronto.

Abraço...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
didonsom
Novato
Novato


Registrado: Quarta-Feira, 24 de Abril de 2013
Mensagens: 87

MensagemEnviada: Seg Dez 28, 2015 12:56 pm    Assunto: Responder com Citação

Olá Ghost Rider,

Obrigado pela dica amigo...
Não conhecia essa propriedade TAG do form, dessa forma realmente facilita e muito!

vou ajustar o código e depois post aqui para ajudar quem precisar Very Happy

abraços

Diego
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
didonsom
Novato
Novato


Registrado: Quarta-Feira, 24 de Abril de 2013
Mensagens: 87

MensagemEnviada: Seg Dez 28, 2015 2:49 pm    Assunto: Responder com Citação

Ghost Rider,

Fiquei com uma duvida.. qual a melhor forma de fazer esse Insert por que será setado permissões diferentes para cada form..

Para não ficar cansativo, tenho um ScrollBox em tela onde o usuário rola a barra escolhendo o que quer marcando os DbCheckboxs (não tenho telas individuais para ele inserir separadamente), corrigindo o que falei em cima.. não são botões e sim checkboxs

eu poderia pegar o valor desses checkbox e adicionar em variáveis e realizar um único insert, ou abrir varias seções da mesma tabela no form relacionando elas ao DBcheckbox, mas acho que dessa forma não seria correto.

o q sugere?

Galera, desculpem, mas ainda tenho muito o q aprender de delphi Very Happy

Abraços,

Diego
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
Ghost_Rider
Colaborador
Colaborador


Registrado: Segunda-Feira, 6 de Outubro de 2003
Mensagens: 4437

MensagemEnviada: Ter Dez 29, 2015 6:48 am    Assunto: Responder com Citação

Tá..o primeiro passo ai é você ter uma tela onde será inserida as "permissões" do usuário...
No meu caso, no cadastro de usuários, eu tenho uma stringgrid com os menus e uma coluna para cada permissão, uma para acesso do form, outra para inserção, outra para alteração e outra coluna para exclusão.
No meu caso, cada coluna é um checkbox que você seta como permitindo ou não aquela opção. Não vou entrar em detalhes como eu faço o check porque uso uma grid não nativa do delphi junto com outro componente de dados em memória, mas enfim, você checa o que o usuário vai poder fazer.
Depois disso, faço um while do inicio ao final da grid, fazendo um insert para cada linha da grid. Mesmo o usuário não tendo permissão para determinado form eu gravo um registro dizendo que ele não tem essa permissão.
Faço isso até porque quando carrego o sistema, pego essas permissões e verifico o que ele pode ou não acessa, se ele não puder acessar um determinado form, eu desabilito ele no menu.
Abraço...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
didonsom
Novato
Novato


Registrado: Quarta-Feira, 24 de Abril de 2013
Mensagens: 87

MensagemEnviada: Ter Dez 29, 2015 7:06 am    Assunto: Responder com Citação

Olá,

Valeu pela dica.
Aqui estou fazendo um pouquinho diferente, por que tenho o "Grupos de Acesso" separado dos usuários, quero setar permissões nos grupos.

Uma solução paliativa que encontrei é criar diversos datasources para realizar os insert na mesma tabela, mas acho q a melhor forma seria utilizar um vetor para inserir, alterar etc.. Depois eu post o código, para ajudar que precisar.


Abraços

Diego
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
Ghost_Rider
Colaborador
Colaborador


Registrado: Segunda-Feira, 6 de Outubro de 2003
Mensagens: 4437

MensagemEnviada: Ter Dez 29, 2015 8:16 am    Assunto: Responder com Citação

Eu tambem tinha, mas pense comigo..qual a diferença da permissão do usuário para o grupo ??? Nenhuma..logo, eu uso a mesma tabela tanto para usuário como para grupo, dai eu seto uma variável indicando se a permissão é de grupo ou do usuário, mas as permissões ficam na mesma tabela...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB