2015-08-24 53 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)) 

感謝來實現。