Olá amigo, vou tentar dar uma idéia do que você faria (já fazem 3 meses que este post foi criado, mas não custa nada deixar gravado para futuros membros que acessarem).
seguindo sua linha de pensamento:
// Você precisa instanciar uma Identity
@In Identity identity;
if (identity.getUsername()== “admin”){
// …permissoes para tudo…
identity.addRole(“admin”);
}else{
… apenas pode visualizar os registos, sem poder alterar/editar nada…
}
Agora, na sua classe que contém sua regra de negocio, você pode adicionar uma restrição aos metodos de alterar, para que somente quem tenha o perfil de “admin” possa executar. Como fazer isto? Você pode configurar pela sua page.xml ou usando uma anotação, um exemplo simples segue abaixo:
@Restrict("#{s:hasRole(‘admin’)}")
public String alterarDados(Object o){
entity.merge(o);
return “listar”;
}
Legal né? Que tal brincar mais um pouco? Você pode usar o rendered sua tela de acordo com suas permissões. Exemplo:
<s:link id=“removeId"
value=” Remove"
action="#{action.remove}"
propagation=“none”
rendered="#{s:hasRole('admin')}" >
</s:link>
Obviamente, existe muito mais a se aprender e aprimorar, mas acredito que isto já ajude um pouco.
Abraço,