PS
Proteger o usuário admiin
Pessoal gostaria de ajuda para proteger o usuário admin de alteração e exclusão por parte de outros usuários que não seja o próprio usuário admin. Tentei ocultar o mesmo mas sem sucesso. Alguém ajuda ai?
Eu particularmente criei um novo atributo na tabela system_user chamado "priv_admin".
Nas listas de usuário, não sendo o próprio admin, ou seja, priv_admin = 'Y',ele não é exibido.
Resolvi assim. Ah, esse atributo é setado diretamente no BD.
Marcelo, pode mostrar o trecho do código onde fez essa alteração por gentileza?
Depois de adicionado o atributo no BD e no model, vc deve colocar a variável na session
LoginForm
No SystemUserList, coloque nos botões de editar excluir uma condição:
Portando se o usuário logado for priv_admin = 'Y' ele poderá editar ou excluir, senão, os botões serão inibidos.
Marcelo, me desculpe por mais uma vez chamando por você, é que sou iniciante no Adianti Studio e só não consigo colocar código no arquivo SystemUserList. Poderia mostrar onde colocou esse código por gentileza?
Paulo, vamos lá!
No final do SystemUserList crie o metodo acima (displayAction).
No controle SystemUserList existem 3 botões, associados à datagrid responsáveis pelas áções de editar, excluir ou trocar o status, Basta após a inserção deles na datagrid, adicionar os códigos abaixo:
Marcelo não estou conseguindo, pode enviar o código do seu SystemUserList ?
Marcelo, desculpe-me, na realidade eu queria somente esconder o usuário admin da lista. Para que outro usuário ao logar, não o veja na grid.
Paulo
Bem, agora uma um pouco de figura.
Eu sugiro então que você construa um novo controle.
Boa Tarde Marcelo, desculpe te incomodar novamente com este tema.
Eu acredito que tenha entendido o que propôs, mas desta forma, os botoes não aparecem em nenhum registro da datragrid se o usuário logado não for o admin, certo?
O que preciso é que o único registro que não apareça os botões de alteração seja o do ADMIN. Você teria alguma orientação a me dar nesse caso?
O meu problema é que tenho um grupo chamado TI, onde os usuários pertencentes a ele, devem poder personificar-se como outros usuários, para testes e manutenções. Porem, ninguém poderia personificar o admin, pois lhe daria um acesso muito maior que não lhe é permitido.
Desde já agradeço.
Aproveito para agradecer, pois sua colaboração com o fórum vem me ajudando muito.
Livea, não tem problema. Estamos aqui para ajudar.
Pergunta 1: Sim, os botões são escondidos quando usuário for diferente de Admin.
Caso 2: O $param do display condition é o objeto da linha, ou seja, troque o $param por $object.
A partir dai vc terá acesso aos atributos da linha. No caso, você terá o $object->priv_admin da linha.
Caso ele seja "N", desabilite o botão. No caso você poderia verificar se o usuário logado é Admin e se for
e o object for um privadmin, habilita para edição.
Ajudei ou compliquei?
Bom dia Marcelo.
Ajudou e muito, usei o object e funcionou perfeitamente.
Muito obrigada pelo retorno tão rapidamente e pela ajuda de sempre
Grata.
Bom dia Marcelo.
Ajudou e muito, usei o object e funcionou perfeitamente.
Muito obrigada pelo retorno tão rapidamente e pela ajuda de sempre
Grata.
Boa noite Marcelo.
Sei que o post é antigo, fiz exatamente como explicou a Livea, mas não funciona nem a pau. Ou exibe todos, ou nenhum botão.
Pior que uso a mesma função em outra lista (Financeiro) e funciona perfeitamente.
Eis meu código:
Para os botões da grid:
Para a função.
Bom dia Cláudio. Quando você fala que usa em outro módulo e funciona, você está dizendo que a variável de sessão é a mesma?
Verifique se a variável de sessão tem algum conteúdo neste ponto. Utilize var_dump($priv_admin).
Você chegou a conferir se esta variável está recebendo o valor correto?
Boa tarde Marcelo.
Uso em outra grid de financeiro, só que não com esta variável, uso assim.
Mas com esse código que você postou, funciona só que oculta todos os botões quando Não é Admin e exibe todos os botões quando o user é Admin.
Não sei bem como usar o var_dump($priv_admin).
Em que ponto tenho que colocar?
Claudio
Coloque depois a atribuição e para ter certeza coloque um "exit" depois, assim.
Veja o que é exibido. O exit força o encerramento para ter certeza de ver o que foi impresso pelo var_dump.
Como eu disse antes, A variavel está trazendo o valor correto.
string(1) "Y"
Para Administrador e:
string(1) "N"
Para Não Administrador.
Claudio
Se está tudo como disse, não tem por que não funcionar.
Poderia compartilhar o código para que eu possa tentar executar aqui?
Boa tarde Marcelo. Segue.
LoginForm.class.php
SystemUSerLis.class.php
Claudio
Sua dúvida inicial foi ue estava ocultando todos os botões quando o usuário não era admin e exibia todos quando era admim.
Pelo que pude ver no seu código o comportamento está correto, pois você está chamando a mesma displayConditions em todos eles.
Não há problemas, está CORRETO!!!
Se deseja este comportamento em apenas um botão, somente neste vc deve chamar displayAction.
Pois é amigo. Pelo visto não vai dar certo desta forma, porquê o usuário que não é admin pode editar dados de outros usuários.
Sendo desta forma, ele não faz nada, mesmo que eu use a função somente para um botão.
Na minha lista financeira, conforme imagem funciona perfeitamente.
Veja, ele oculta botão de exclusão quando o Tipo é "Receita Loja".
Mas quando não é, exibe os dois botões.
Dessa forma que seria interessante.
https://zeromeia.com/imagens/ERRO_BOTOES_LISTA_USER.png
Claudio
Depende da sua regra.
Da forma que implementou está correto. Você está usando a mesma função pra todos.
Você já tentou criar uma função para cada botão?
Concordo com você que da forma que está, funciona corretamente.
É uma hipótese criar uma função para cada botão.
Vou tentar.
Não deu certo, porquê ele oculta somente um botão.
Vou deixar de lado esse tema, tenho mais dois post no fórum para resolver.
Se você puder ajudar eu agradeço muito. Só falta isso pra finalizar o sistema.
https://www.adianti.com.br/forum/pt/view_6851?acentuacao-em-grid-do-mestre-detal
https://www.adianti.com.br/forum/pt/view_6822?confirmar-gravar-abrir-pdf-e-retor
Abraço Marcelo e obrigado por sua paciência e tempo em ajudar as pessoas.
Claudio
Está um pouco confuso.
Mas o que exatamente você precisa?
Quais ações vc quer inibir e quais você quer exibir quando um usuário não é "admin"?