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:
- Recuperamos o elemento e verificamos o seu tipo, por exemplo: Journal
- Recuperamos o link do elemento
- Recuperamos do link artefatos interessantes para que possamos recuperar maiores informações sobre o conteúdo e assim realizar o teste das permissões.
- Utilizamos os dados recuperados para recuperar as informações relevantes do conteúdo.
- Utilizar o metodo que checa as permissões para o conteúdo e o usuário logado no sistema, por exemplo: JournalArticlePermission.contains();
- Utilizamos normalmente o PermissionChecker do Portlet que devolveu o conteúdo.
- 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.
e-commerce & e-learning
março 2nd, 2010 : 11:32 pm
[...] 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 [...]
março 5th, 2010 : 10:29 am
[...] http://www.weblibre.com.br/problema-permissoes-no-resultado-do-portlet-busca/ [...]