在Liferay Velocity主题中检查用户是否为站点所有者或站点管理员

时间:2016-02-17 14:11:50

标签: liferay velocity

我们有一个主题,代码如下:

#foreach($role in $user.getRoles())
        #if($role.getName() != "Administrator")
        <style>
            header.portlet-topper{pointer-events: none;}
            header.portlet-topper > .portlet-topper-toolbar > span{pointer-events: all;}
            header.portlet-topper > .portlet-topper-toolbar > a{pointer-events: all;}
            .aui-toolbar .add-content{display: none;}
            .aui-toolbar .manage-content{display: none;}
            .aui-toolbar .toggle-controls{display: none;}   
            .aui-toolbar .aui-toolbar-separator{display: none;}
            .portlet-topper-toolbar .portlet-close{display: none;}

            body.private-page header.portlet-topper{pointer-events: all;}
            body.private-page header.portlet-topper > .portlet-topper-toolbar > span{pointer-events: all;}
            body.private-page header.portlet-topper > .portlet-topper-toolbar > a{pointer-events: all;}
            body.private-page .aui-toolbar .add-content{display: inline;}
            body.private-page .aui-toolbar .manage-content{display: inline;}
            body.private-page .aui-toolbar .toggle-controls{display: inline;}   
            body.private-page .aui-toolbar .aui-toolbar-separator{display: inline;}
            body.private-page .portlet-topper-toolbar .portlet-close{display: inline;}

        </style>
        #end
        #if($role.getName() == "Administrator")
        <style>
            header.portlet-topper{pointer-events: all;}
            header.portlet-topper > .portlet-topper-toolbar > span{pointer-events: all;}
            header.portlet-topper > .portlet-topper-toolbar > a{pointer-events: all;}
            .aui-toolbar .add-content{display: inline;}
            .aui-toolbar .manage-content{display: inline;}
            .aui-toolbar .toggle-controls{display: inline;} 
            .aui-toolbar .aui-toolbar-separator{display: inline;}
            .portlet-topper-toolbar .portlet-close{display: inline;}                
        </style>
            #break
#end

基本上,如果用户不是门户网站管理员,我们会删除停靠栏上的“添加”和“管理”按钮,以及从页面拖放和删除portlet的功能。问题是如果用户创建了一个新站点,我们希望他们能够恢复这些功能。在Velocity中有一种方法可以判断用户是站点所有者还是站点管理员?我已经为用户提供了站点控制面板中的角色。

我也试过了:

$role.getName() == "Site Owner"

role.getName().equals("Site Owner")

但这些都不起作用。

1 个答案:

答案 0 :(得分:0)

首先,你需要在主题中获得role

#set($roleLocalService = $serviceLocator.findService("com.liferay.portal.service.RoleLocalService"))
#set($site_owner_role = $roleLocalService.getRole($company_id, "Site Owner"))

然后获取UserLocalService

#set($UserLocalService =  $serviceLocator.findService("com.liferay.portal.service.UserLocalService"))

之后,您可以通过执行以下操作来测试用户是否拥有role

#if ($UserLocalService.hasRoleUser($site_owner_role.getRoleId(), $user_id))
   //if the user has role...do this
#end