Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Khyquer

ACL - Permissões de usuário

Recommended Posts

Boa tarde senhores,

 

Estou analisando e modelando um ACL para nosso sistema, que utiliza Oracle.

 

Atualmente temos as seguintes tabelas:

 

 

 

Recurso (

id*,

nome,

parent_id)

Acao (

id*,

nome,

recurso_id)

Grupo (id*,

nome)

Usuário (id*,

nome)

Loja (id*,

nome)

 

Usuário_recurso (recurso_id,

usuario_id,

loja_id)

Grupo Recurso (grupo_id,

recurso_id)

Grupo_usuario (grupo_id,

usuario)

 

 

Nosso objetivo é controlar as permissões dos usuários por grupos, por lojas e individual. Ou seja, eu posso ter acesso a um recurso por pertencer a uma loja, um grupo ou receber este acesso de forma direta.

 

Quanto a loja existe uma particularidade. Todas as permissões que eu tenho valem por padrão apenas para a minha filial, para eu ver outra filial, terei todas as minhas permissões em outra filial também.

 

 

Consegui obter ações dos recursos filho

 

--selecionar ações dos recursos filho
select UNIQUE *
from recurso rec
   LEFT JOIN acao ac
     on (rec.id = ac.recurso_id)
  CONNECT BY PRIOR rec.id = rec.parent_id 
 START WITH  rec.id  = 1

 

 

e também Ações dos recursos que meu usuário e seus grupos tem acesso

 

 


--Ações dos recursos que meu usuário e seus grupos tem acesso
SELECT UNIQUE
 --Caso não tenha definicação de um recurso, ele poderá visualizá-lo  
 (case when ac.id is null then 3 else ac.id end) id,
 (case when ac.nome is null then 'Visualizar' else ac.nome end) acao, rec.id recurso_id, rec.nome recurso_nome

 FROM
   recurso rec    
     LEFT JOIN CRM.acao ac
       on (ac.recurso_id = rec.id),
   usuario_recurso_map usrec,
   grupo_recurso grur      

   WHERE
     usrec.recurso_id = rec.id OR
     grur.recurso_id = rec.id and
     grur.grupo_id in (
                       --Selecionar grupos do usuário
                       select id
                         FROM
                           grupo gr,
                           grupo_usuario grus
                         WHERE
                           grusgrupo_id = gr.id and
                           grus.usuario_id = 1628
                           )

 

 

 

Mas preciso ter ainda os recursos que meus recursos filhos tem acesso! =/

 

Se puderem ajudar agradeço, mas creio que essa modelagem está errada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.