Estendendo o Spring Security Core - Problema com Domain UserRole: Como não persistí-la?
13/09/2012 02:05
Apresentando-me: Depois de milhões de anos sem programar, estou amando esse tal do Grails e resolvi me arriscar a brincar um pouco com isso aqui...desculpem a falta de conhecimento...mas vai lá a dúvida:
Usando o plugin Spring Security Core, por padrao tenho uma classe Usuario outra Regra e a relação gerada UsuarioRegra.
Não quero associar usuario com regra e preciso estender isso...inicialmente...usando uma nova Domain: Perfil
Assim, tenho:
Usuario
...
static hasMany = [perfis:Perfil] ...}
Perfil
...
static hasMany = [regras:Regra, usuarios:Usuario]
static belongsTo = Usuario
...}
Regra
...
static hasMany = [perfis:Perfil]
static belongsTo = Perfil
...}
Até aqui, tudo perfeito (eu acho...rs)
Pelo q entendi até agora, para o Spring, na classe Usuario, há um método getAuthorities() Responsavel por trazer as autoridades (usuario_id, regra_id) que normalmente existiria em uma tabela mapeada na classe Domain UsuarioRegra gerada pelo Plugin.
FINALMENTE AS DUVIDAS:
Problema: Não quero ter a tabela no BD UsuarioRegra. Isso será resultado de uma relação que poderia ser obtida por exemplo na query SQL: "select regra_id from perfil_regras pr inner join usuario_perfis up on pr.perfil_id = up.perfil_id where up.usuario_id = <id do usuario>"
Pergunta:Se nas classes domain usei relações N x N com hasMany, e não existem as Domains das relações PerfilRegra e UsuarioPerfil, como escrevo o catzo da query acima em alguma forma para que o Domain Usuario.getAuthorities() possa obter as regras da relação N x N q eu criei?
P.S. Tentei fazer uma view no BD mas tendo uma classe domain UsuarioRegra, não consegui fazer com que ela não fosse persistida. O grails tenta criar ele no BD mesmo com transient nos atributos. Se eu conseguir q a classe UsuarioRegra nao seja persistida, ótimo, uso a view no BD pra representar a classe e detono os metodos de insert, etc...mas isso fica parecendo meio marreta. Como faço isso ficar bonito?
OBS. Escrevi tanto pq como sou meio burro nisso aqui, tenho q tentar detalhar pra tentar me expressar, espero que tenham paciencia de ler...rs.
Obrigado a todos e parabéns ao KIKO pelo trabalho na comunidade Grails.
Tags:
Spring Security Query transient