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

正在检查用户是否是Liferay Velocity主题中的站点所有者或站点管理员,liferay,velocity,Liferay,Velocity,我们有一个具有以下代码的主题: #foreach($role in $user.getRoles()) #if($role.getName() != "Administrator") <style> header.portlet-topper{pointer-events: none;} header.portlet-topper > .portlet-topper-toolbar > spa

我们有一个具有以下代码的主题:

#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


但这两项都不起作用。

首先,您需要在主题中获得
角色:

#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"))
之后,您可以通过执行以下操作来测试用户是否具有
角色

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

首先,您需要在主题中获得
角色

#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"))
之后,您可以通过执行以下操作来测试用户是否具有
角色

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

谢谢我试试看。我对velocity不太熟悉,而且时间紧迫。默认情况下是否已定义对象($serviceLocator、$roleLocalService、$company\u id)?或者我必须得到这些吗?请查看此处,以了解哪些
对象
运行时变量
可从
velocity
获得,非常感谢。你的解决方案成功了。我没有意识到很多东西都被定义为$init。谢谢。我试试看。我对velocity不太熟悉,而且时间紧迫。默认情况下是否已定义对象($serviceLocator、$roleLocalService、$company\u id)?或者我必须得到这些吗?请查看此处,以了解哪些
对象
运行时变量
可从
velocity
获得,非常感谢。你的解决方案成功了。我没有意识到很多东西是在$init定义的。