Como modelar Usuario/Administrador em um sistema web

2 respostas
bonfarj

O sistema que estou desenvolvendo (Struts 1.2.x e Hibernate 3.2) possui uma classe Usuario, que por sua vez está ligada a uma classe GrupoUsuarios, onde estão as permissões de acesso. Os desenvolvedores acessam o sistema com uma conta “administrador”, um usuário que está dentro de um grupo com todas as permissões.

O problema é que isso não será mais suficiente, teremos algumas telas do sistema que um usuário não poderá ter permissão. Nossa equipe pensou em resolver o problema com a criação de uma nova classe, Administrador. Após pensar em inúmeras questões que devem ser consideradas, pensamos em três formas de fazer isso:

Solução 1
Usuario (classe concreta no Java e abstrata no Hibernate)
UsuarioComum estende Usuario
UsuarioAdministrador estende Usuario

Solução 2
Usuario (classe abstrata)
UsuarioComum estende Usuario
UsuarioAdministrador estende Usuario

Solução 3
Usuario (classe concreta)
Administrador estende Usuario

Imagino que essa seja uma situação comum e muitos dos usuários do GUJ já tenham vivenciado isso. Alguém poderia dar uma luz? :smiley:

Abraços a todos!

2 Respostas

AvilaCS

Se entendi bem, você precisa de outro conjunto de direitos (permissões de acesso) e não alterar ou criar novos tipos de usuários e consequentemente alterar a sua estrutura de classes.

E se amanhã aparecer um usuário que tem um perfil de acesso diferente, você criará uma classe para representá-lo?

Pense nisto.

bonfarj

Se entendi bem, você precisa de outro conjunto de direitos (permissões de acesso) e não alterar ou criar novos tipos de usuários e consequentemente alterar a sua estrutura de classes.

E se amanhã aparecer um usuário que tem um perfil de acesso diferente, você criará uma classe para representá-lo?

Pense nisto.

Oi, AvilaCS!

Como eu falei, já temos uma estrutura de permissões de acesso, cada grupo tem um conjunto de permissões. A questão é que sentimos necessidade de ter um usuário a parte (administrador), com algumas peculiaridades. Por exemplo, no nosso sistema, podemos configurar um grupo de usuários de forma que seus membros possam modificar as permissões de outros grupos (administrador/cliente). No entanto, é necessário que exista um usuário que fique acima disso, que tenha permissão pra tudo e não possa ser alterado (administrador/minha empresa).

Acabamos optando pelo que chamei de “solução 2”, ela tinha alguns problemas que conseguimos resolver bem depois de muito discutir sobre o modelo. De qualquer forma eu agradeço ao pessoal que leu e ao AvilaCS que postou, fica o tópico aqui para alguém que possa precisar de ajuda com questões relacionadas a isso mais a frente.

Abraços a todos! :wink:

Criado 1 de novembro de 2007
Ultima resposta 5 de nov. de 2007
Respostas 2
Participantes 2