/**
   * Método usado para autenticar o usuário no sistema. Aqui o método utiliza o valor dos atributos
   * userCpf e password setados pelo usuário na página para tentar realizar a autenticação, que será
   * confirmada pela chamada do método login da instância de authenticationService.
   *
   * @return
   */
  public String logar() {
    String retorno = "";
    usuario = new Usuario();
    usuario.setCpf(userCpf);
    usuario.setSenhahash(password);
    if (usuarioService.findByCpfSenha(usuario.getCpf(), usuario.getSenhahash())) {
      listaPermissao = permissaoService.findByUsuario(usuario);
      usuario.setPermissoes(listaPermissao);
      if (!listaPermissao.isEmpty()) {

        if (listaPermissao != null && listaPermissao.size() >= 2) {
          return "escolhaPerfil";
        } else {
          idPermissaoAtual = listaPermissao.get(0).getId();
          buscarPerfilUsuarioOrgaoPermissaoId();

          if (listaPerfilUsuarioOrgaos.size() >= 2) {
            return "escolhaPerfil";
          } else {
            retorno = autenticacaoUsuario(listaPermissao.get(0), null);
          }
        }
      } else {
        MensagensController.addError("O usuário não contém nenhum Orgao atribuido!");
      }
    } else {
      MensagensController.addWarn("Usuário ou Senha Inválidos!");
      return "login";
    }
    return retorno;
  }