【发布时间】:2013-06-28 11:26:09
【问题描述】:
如何在 Liferay Themes 中获取已登录用户的角色?如何检查用户是否属于特定角色?
【问题讨论】:
标签: liferay liferay-6 liferay-theme liferay-velocity
如何在 Liferay Themes 中获取已登录用户的角色?如何检查用户是否属于特定角色?
【问题讨论】:
标签: liferay liferay-6 liferay-theme liferay-velocity
UserLocalService 具有hasRoleUser 方法,可用于确定用户是否属于特定角色。
下面的代码可以放在templates文件夹下的navigation.vm文件中。
#set($UserLocalServiceUtil = $serviceLocator.findService("com.liferay.portal.service.UserLocalService"))
#if ($UserLocalServiceUtil.hasRoleUser(roleID, $user.getUserId())) // It takes roleID as input to check.
//Proceed with whatever you want to
#else
//Proceed with something else
注意:如果你使用com.liferay.portal.service.UserLocalServiceUtil,而不是com.liferay.portal.service.UserLocalService,
可能在this 等资源中找到,那么您将遇到以下异常,
ERROR com.liferay.portal.kernel.bean.BeanLocatorException: org.springframework.beans.factory.NoSuchBeanDefinitionException: No
bean named 'com.liferay.portal.service.UserLocalServiceUtil' is defined
com.liferay.portal.kernel.bean.BeanLocatorException: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'com.liferay.portal.servi
ce.UserLocalServiceUtil' is defined
另一种方法是,
#set($role=$serviceLocator.findService("com.liferay.portal.service.RoleLocalService"))
$role.getUserRoles($user_id)
【讨论】:
只需遍历 init.vm 中定义的 $user 对象
#set ($user_roles = $user.getRoles())
#foreach($role in $user_roles)
$role.name<br />
#end
【讨论】: