<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <title>Search Engine - handling permissions</title>
  <link rel="self" href="https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=113274461" />
  <subtitle>Search Engine - handling permissions</subtitle>
  <id>https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=113274461</id>
  <updated>2026-04-03T20:55:19Z</updated>
  <dc:date>2026-04-03T20:55:19Z</dc:date>
  <entry>
    <title>RE: Search Engine - handling permissions</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113332958" />
    <author>
      <name>Jorge Diaz</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113332958</id>
    <updated>2019-04-22T09:02:02Z</updated>
    <published>2019-04-22T09:02:02Z</published>
    <summary type="html">Hi Jan,&lt;br /&gt;&lt;br /&gt;Indexer framework has changed since 7.1 and now instead of having a big *Indexer class that extends BaseIndexer, you have to create several smaller classes as explained here:&lt;ul style="list-style: disc outside;"&gt;&lt;li&gt;&lt;a href="https://dev.liferay.com/es/develop/tutorials/-/knowledge_base/7-1/indexing-framework#mapping-the-composite-search-and-indexing-framework-to-indexer-baseindexer-"&gt;https://dev.liferay.com/es/develop/tutorials/-/knowledge_base/7-1/indexing-framework#mapping-the-composite-search-and-indexing-framework-to-indexer-baseindexer-&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;With this new approach,  &lt;strong&gt;setPermissionAware(true/false)&lt;/strong&gt; is not longer necessary as it relies in the new permissions framework explained here:&lt;ul style="list-style: disc outside;"&gt;&lt;li&gt;&lt;a href="https://dev.liferay.com/es/develop/tutorials/-/knowledge_base/7-1/registering-permissions#registering-entities-to-the-permissions-service"&gt;https://dev.liferay.com/es/develop/tutorials/-/knowledge_base/7-1/registering-permissions#registering-entities-to-the-permissions-service&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;It is not necessary to define &amp;#34;permission aware&amp;#34;, as index/search behavior is automatic: in case you define a &lt;strong&gt;ModelResourcePermission&lt;/strong&gt; service for your entity, permission info will be used during indexation and search.&lt;br /&gt;&lt;br /&gt;In case &lt;strong&gt;ModelResourcePermission&lt;/strong&gt; service doesn&amp;#39;t exists, it won&amp;#39;t be applied. See:&lt;ul style="list-style: disc outside;"&gt;&lt;li&gt;&lt;strong&gt;DefaultIndexer.isPermissionAware =&amp;gt;&lt;/strong&gt; &lt;a href="https://github.com/liferay/liferay-portal/blob/7.1.x/modules/apps/portal-search/portal-search/src/main/java/com/liferay/portal/search/internal/indexer/DefaultIndexer.java#L217-L219"&gt;https://github.com/liferay/liferay-portal/blob/7.1.x/modules/apps/portal-search/portal-search/src/main/java/com/liferay/portal/search/internal/indexer/DefaultIndexer.java#L217-L219&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;IndexerPermissionPostFilterImpl =&amp;gt;&lt;/strong&gt; &lt;a href="https://github.com/liferay/liferay-portal/blob/7.1.x/modules/apps/portal-search/portal-search/src/main/java/com/liferay/portal/search/internal/indexer/IndexerPermissionPostFilterImpl.java#L62-L67"&gt;https://github.com/liferay/liferay-portal/blob/7.1.x/modules/apps/portal-search/portal-search/src/main/java/com/liferay/portal/search/internal/indexer/IndexerPermissionPostFilterImpl.java#L62-L67&lt;/a&gt;&lt;/li&gt;&lt;li&gt;IndexerPermissionPostFilterImpl  is initialize in ModelSearchConfiguratorServiceTrackerCustomizer, there modelResourcePermissionSupplier is set. You can see modelResourcePermissionSupplier is only set in case &lt;strong&gt;ModelResourcePermission &lt;/strong&gt;exists.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;ModelSearchConfiguratorServiceTrackerCustomizer =&amp;gt; &lt;/strong&gt;&lt;a href="https://github.com/liferay/liferay-portal/blob/7.1.x/modules/apps/portal-search/portal-search/src/main/java/com/liferay/portal/search/internal/indexer/ModelSearchConfiguratorServiceTrackerCustomizer.java#L237-L243"&gt;https://github.com/liferay/liferay-portal/blob/7.1&lt;/a&gt;&lt;a href="https://github.com/liferay/liferay-portal/blob/7.1.x/modules/apps/portal-search/portal-search/src/main/java/com/liferay/portal/search/internal/indexer/ModelSearchConfiguratorServiceTrackerCustomizer.java#L237-L243"&gt;.x/modules/apps/portal-search/portal-search/src/main/java/com/liferay/portal/search/internal/indexer/ModelSearchConfiguratorServiceTrackerCustomizer.java#L237-L243.&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;If you consider all this stuff is very complicated, for now you can still creating your Indexer class extending &lt;strong&gt;BaseIndexer.java&lt;/strong&gt; as it is still supported, but sooner or later this kind of Indexers will be deprecated and removed.&lt;br /&gt;&lt;br /&gt;Regards,&lt;br /&gt;Jorge</summary>
    <dc:creator>Jorge Diaz</dc:creator>
    <dc:date>2019-04-22T09:02:02Z</dc:date>
  </entry>
  <entry>
    <title>Search Engine - handling permissions</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113274460" />
    <author>
      <name>Jan Tošovský</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113274460</id>
    <updated>2019-04-17T15:03:33Z</updated>
    <published>2019-04-17T15:03:33Z</published>
    <summary type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;In 6.2 I found the reason of slow search in our case is not Lucene, but subsequent permission checks (our permission logic is quite complex).&lt;br&gt;&lt;br&gt;For 7.x, after migrating, I planned to simplify that permission logic to be even able to pass all the necessary into Search Engine directly so no permission checking is needed afterwards.&lt;br&gt;&lt;br&gt;But reading 7.1 documentation I am discovering completely different world.&lt;br&gt;&lt;br&gt;Especially this is quite unclear:&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;In previous versions of Liferay Portal, search was only &lt;em&gt;permissions aware&lt;/em&gt; (indexed with the entity’s permissions and searched with those permissions intact) if the application developer specified this line in the &lt;pre&gt;&lt;code&gt;Indexer&lt;/code&gt;&lt;/pre&gt; class’s constructor:&lt;br&gt;&lt;pre&gt;&lt;code&gt;[code]setPermissionAware(true);
&lt;/code&gt;&lt;/pre&gt;Now, search is permissions aware by default &lt;em&gt;if the new permissions approach&lt;/em&gt;, as described in &lt;a href="https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-1/defining-application-permissions"&gt;these tutorials&lt;/a&gt;, is implemented for an application.&lt;/blockquote&gt; &lt;a href="https://dev.liferay.com/es/develop/tutorials/-/knowledge_base/7-1/indexing-framework#permissions-aware-searching-and-indexing"&gt;https://dev.liferay.com/es/develop/tutorials/-/knowledge_base/7-1/indexing-framework#permissions-aware-searching-and-indexing&lt;/a&gt;&lt;br&gt;&lt;br&gt;Does it mean that permission checks cannot be disabled? Or is that permission check performed directly by the search engine, not afterwards by Liferay Engine?&lt;br&gt;&lt;br&gt;Has anybody some insights how search results permission checks are done in the context of the new Search API?&lt;br&gt;&lt;br&gt;Thanks,&lt;br&gt;&lt;br&gt;Jan&lt;/body&gt;&lt;/html&gt;</summary>
    <dc:creator>Jan Tošovský</dc:creator>
    <dc:date>2019-04-17T15:03:33Z</dc:date>
  </entry>
</feed>
