2015-08-24 54 views
2

我经历过的问题上SO淘换了一个解决这个没有任何运气呢。我发现一些类似的问题,但没有解决方案。Liferay的主题 - 速度 - 检查用户自定义角色

我想在登录时添加某种角色检查以查看用户是否具有我定义的自定义角色。如果是这样。他们得到停靠栏。

目前正在检查他们是否是整个网站的管理员。这是我不想给人的东西。他们需要像一个拥有特定权限的高级用户。

目前的检查是像这样:

#if ($is_signed_in && $permissionChecker.isOmniadmin()) 

我见过的例子检查看起来像他们将工作的特定角色ID。

这里举例:

#set($UserLocalServiceUtil = $serviceLocator.findService("com.liferay.portal.service.UserLocalService")) 
#if ($UserLocalServiceUtil.hasRoleUser(roleID, $user.getUserId())) 

这种方法唯一的问题是我不能确定的就是我自定义角色ID是,我如何去得到它..

所以

不有谁知道我能得到我的自定义角色ID?

OR

是否有某种.getRoleName选择的,我忽略了?

回答

2

也许这种方法可以帮助你完成的代码。

是否有可能有名字的角色(和名称可以存储&通过主题设置配置)

#set($RoleLocalServiceUtil = $serviceLocator.findService("com.liferay.portal.service.RoleLocalService")) 
#set ($role = $RoleLocalServiceUtil.fetchRole(roleName, $themeDisplay.companyId)) 
0

这可以在一个方法调用

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

#if ($roleLocalServiceUtil.hasUserRole($user.getUserId(),$user.getCompanyId(), "<YOUR ROLE NAME>", true)) 

感谢来实现。