package br.gov.servicos.editor.security; import br.gov.servicos.editor.conteudo.TipoPagina; import static br.gov.servicos.editor.conteudo.TipoPagina.PAGINA_TEMATICA; public abstract class CheckOrgaoEspecificoController { public boolean usuarioPodeRealizarAcao(UserProfiles perfil, TipoPagina tipoPagina, String orgaoId) { TipoPermissao permissao = getTipoPermissao(); if (PAGINA_TEMATICA.equals(tipoPagina)) { return usuarioTemPermissaoParaTipoPagina(permissao, perfil, tipoPagina); } return usuarioTemPermissaoParaTipoPagina(permissao, perfil, tipoPagina) || perfil.temPermissaoParaTipoPaginaOrgaoEspecifico(permissao, tipoPagina, orgaoId); } public abstract TipoPermissao getTipoPermissao(); private boolean usuarioTemPermissaoParaTipoPagina(TipoPermissao tipoPermissao, UserProfiles userProfiles, TipoPagina tipoPagina) { return userProfiles.temPermissaoParaTipoPagina(tipoPermissao, tipoPagina); } }