2015-10-14 3 views
0

Я разрабатываю шаблон отображения приложения (freemarker) для портлета карты сайта для рендеринга в моем макете в нижнем колонтитуле страниц. Пока все работает. Я могу проходить через мои страницы и делать правильный результат. Также проверяет, скрыта ли страница.Проверка разрешений в шаблоне отображения приложений Liferay

Теперь мне нужна еще одна функция. Я хочу проверить, доступна ли страница только зарегистрированным пользователям (= не показывать ссылку на гостя, когда разрешения на страницу запрещают гостям просматривать страницу).

Вот мой код ADT.

<#if entries?has_content> 
    <#list entries as entry> 
     <#assign layoutURL = portalUtil.getLayoutURL(entry, themeDisplay)> 

     <div class="grid3"> 
      <ul> 
       <#if entry.isHidden() == false> 
        <li><a href="${layoutURL}">${entry.getName(locale)}</a></li> 
       </#if> 
      </ul> 
     </div> 
    </#list> 
</#if> 

Может ${themeDisplay.getPermissionChecker()} может сделать трюк, но я на самом деле не имеют понятия о том, чтобы проверить наличие разрешений пользователей на странице. В идеальном мире я могу различать разные группы пользователей, но я бы согласился на показ при входе в систему, скрыть, когда анонимно (= гость).

Я использую Liferay 6.2. У кого-то появилась идея?

ответ

4

Что вы хотите сделать, это , чтобы проверить разрешение просмотра для данной страницы (макет).

Freemarker фрагмент кода:

layoutPermission.contains(permissionChecker, entry.getPlid(), 'VIEW') 

layoutPermission доступен для всех ADT шаблонов и ссылки LayoutPermission интерфейс. entry означает текущий Layout экземпляр.

Я принял совет от this post на форумах Liferay.

Чтобы узнать об этом, если пользователь вошел в систему, вы можете позвонить по телефону ThemeDisplay#isSignedIn.

Freemarker фрагмент кода:

<#if themeDisplay.isSignedIn()> 
    <#-- user is logged in --> 
<#else> 
    <#-- user is guest --> 
</#if> 
+0

Я думал themeDisplay.isSignedIn(), а также, но это поможет с разрешениями страницы? Я не хочу строить две отдельные навигационные системы, а скорее одну навигацию, которая учитывает разрешения при повторении дерева страниц. Более простое решение без подробных разрешений по-прежнему необходимо признать, что зарегистрированный пользователь не имеет права видеть элемент навигации. Отличие между GroupA и GroupB приятно иметь, но не жизненно важно. Поэтому в основном мне нужно знать, является ли страница видимой для всех или для пользователей, зарегистрированных в журнале, поэтому я могу избежать предоставления определенных ссылок для гостевых пользователей. –

+0

Я думаю, что использование themeDisplay.isSignedIn() может не быть решением, потому что я не хочу исключать черный список статических страниц. Я хочу свободно устанавливать разрешения для страниц, используя функции управления сайтом liferays. –

+0

Вы правы. Я недостаточно внимательно прочитал вопрос. ThemeDisplay # isSignedIn может использоваться только для проверки того, подписан ли пользователь (или гость). Он не оценивает права пользователя на отдельные страницы (макеты). –

Смежные вопросы