Problema permissões no resultado do portlet Busca

Um BUG grave do Liferay na versão 5.2.3 é relacionado a o resultado do portlet de Busca.

Ele devolve o resultado baseado em um parametro de busca mas não leva em consideração as permissões sobre aquele resultado, ou seja, se o usuário pode ou não ver aquele título.

Essa situação é bastante indesejada e não foi proposta nenhuma mudança simples que solucionasse esse problema.

Nós realizamos um workaround e realizamos algumas alterações para que essa permissão fosse respeitada.

Em sua nova versão, supostamente chamada de 6.0 o Liferay corrige esse problema, mas replicar as alterações que a versão nova utilizou para corrigir o problema é bastante inviável.

Funcionamento do Portlet de Busca:

Basicamente o do portlet de busca realiza uma chamada aos portlets que desejamos realizar a busca e esses portlets são responsáveis pela devolução dos itens relevantes a palavra chave utilizada.

O Portlet de busca então se encarrega de listar essas opções e mostrar ao usuário todos os resultados que lhe foram entregues.

Nossa Solução:

No nosso workaround descobrimos que a melhor maneira de implementar isso é continuar recebendo todos os resultados relevantes e realizar o filtro após, criando uma outra lista de resultados, agora sim levando em conta as permissões.

Como Implementamos:

Podemos resumir com a sequencia de passos abaixo:

  1. Recuperamos o elemento e verificamos o seu tipo, por exemplo: Journal
  2. Recuperamos o link do elemento
  3. Recuperamos do link artefatos interessantes para que possamos recuperar maiores informações sobre o conteúdo e assim realizar o teste das permissões.
  4. Utilizamos os dados recuperados para recuperar as informações relevantes do conteúdo.
  5. Utilizar o metodo que checa as permissões para o conteúdo e o usuário logado no sistema, por exemplo: JournalArticlePermission.contains();
  6. Utilizamos normalmente o PermissionChecker do Portlet que devolveu o conteúdo.
  7. Se o conteúdo puder ser exibido ele será adicionado a nova lista, se não ele é descartado.

Utilizamos essa lista no lugar da antiga e não necessitamos mudar mais nada no código.

2 Comentários

  1. Problema permissões no resultado do portlet Busca | WebLibre – resultado

    [...] http://www.weblibre.com.br/problema-permissoes-no-resultado-do-portlet-busca/Um BUG grave do Liferay na versão 5.2.3 é relacionado ao resultado do portlet de Busca. Ele [...]

  2. Liferay – PermissionChecker – Como usar | WebLibre

    [...] http://www.weblibre.com.br/problema-permissoes-no-resultado-do-portlet-busca/ [...]

Deixe um comentário

Observação: O seu comentário pode demorar algumas horas para aparecer.