在 Liferay Velocity Theme 中检查用户是站点所有者还是站点管理员
Checking if user is Site Owner or Site Admin in Liferay Velocity Theme
我们有一个主题,代码如下:
#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
基本上,如果用户不是门户管理员,我们会取消停靠栏上的 "Add" 和 "Manage" 按钮,以及 drag/drop 和删除的功能来自页面的 portlet。问题是,如果用户创建了一个新站点,我们希望他们恢复那些功能。 Velocity 中有没有办法判断用户是站点所有者还是站点管理员?我已经在站点的控制面板中为用户提供了角色。
我也试过:
$role.getName() == "Site Owner"
和
role.getName().equals("Site Owner")
但这些都不起作用。
首先你需要获取主题中的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
我们有一个主题,代码如下:
#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
基本上,如果用户不是门户管理员,我们会取消停靠栏上的 "Add" 和 "Manage" 按钮,以及 drag/drop 和删除的功能来自页面的 portlet。问题是,如果用户创建了一个新站点,我们希望他们恢复那些功能。 Velocity 中有没有办法判断用户是站点所有者还是站点管理员?我已经在站点的控制面板中为用户提供了角色。
我也试过:
$role.getName() == "Site Owner"
和
role.getName().equals("Site Owner")
但这些都不起作用。
首先你需要获取主题中的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