2015-10-14 55 views
0

我正在开发一个应用程序显示模板(freemarker),供站点地图portlet在页面页脚中的布局中呈现。到目前为止,一切正常我可以迭代我的页面并呈现正确的结果。检查页面是否隐藏。在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()}可以做的伎俩,但我真的没有对如何检查页面上的用户权限的线索。在一个完美的世界中,我可以区分不同的用户群体,但是我会在登录时解决显示问题,隐藏匿名(= guest)时。

我正在使用Liferay 6.2。任何人有想法?

回答

4

你想要做的是来检查给定页面(布局)的查看权限。

Freemarker的片段:

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

layoutPermission可用于所有ADT模板和引用LayoutPermission接口。 entry表示当前的Layout实例。

我在Liferay Forums上接受了this post的建议。

要简单地找出,如果用户登录,您可以拨打电话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只能用于检查用户是否登录(或访客)。它不评估用户对单个页面(布局)的权限。 –