@ApiOperation("Pesquisar " + ENTIDADE + " por id")
@GetMapping("{id}")
@PreAuthorize("@usuarioPermissaoAcesso.podePesquisar()")
public ResponseEntity<?> buscarPorId(@PathVariable final String id, @ApiIgnore final Principal principal) {
try {
return ResponseEntity.status(OK).body(service.buscaPorIdExterno(id));
} catch (final GeralException e) {
return erroExceptionComRegra(e, ENTIDADE);
} catch (final Exception e) {
return mensagemRetorno(e, ERROR, ENTIDADE, getMensagemErroBuscarPorId(ENTIDADE));
}
}
Como chamar o método que está no @PreAuthorize, antes de entrar no controler ?
package br.com.ghnetsoft.gestorsistemas.usuario.service.permissao;
import static br.com.ghnetsoft.gestorsistemas.model.enuns.UsuarioPerfilEnum.ADMINISTRADOR;
import static br.com.ghnetsoft.gestorsistemas.model.enuns.UsuarioPerfilEnum.OPERADOR;
import java.io.Serializable;
import java.security.Principal;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import br.com.ghnetsoft.gestorsistemas.model.Usuario;
import br.com.ghnetsoft.gestorsistemas.repository.UsuarioRepository;
@Service("usuarioPermissaoAcesso")
public class UsuarioPermissaoAcesso implements Serializable {
private static final long serialVersionUID = 7816159556263191916L;
@Autowired
private transient UsuarioRepository repository;
public boolean podeIncluir(final Principal principal) {
final Optional<Usuario> usuarioExiste = repository.findById(principal.getName());
if (usuarioExiste.isPresent() && (ADMINISTRADOR == usuarioExiste.get().getGrupoAcesso() || OPERADOR == usuarioExiste.get().getGrupoAcesso())) {
return true;
}
return false;
}
public boolean podeAlterar(final Principal principal) {
final Optional<Usuario> usuarioExiste = repository.findById(principal.getName());
if (usuarioExiste.isPresent() && (ADMINISTRADOR == usuarioExiste.get().getGrupoAcesso() || OPERADOR == usuarioExiste.get().getGrupoAcesso())) {
return true;
}
return false;
}
public boolean podePesquisar() {
return true;
}
public boolean podeAtivar() {
return true;
}
public boolean podeDesativar() {
return true;
}
}