如何在Liferay 6.1中将用户组的站点角色权限继承到其成员?

时间:2014-05-20 12:35:38

标签: inheritance liferay liferay-6 user-permissions

我正在使用Liferay 6.1,我有一个名为MySite Approvers的用户组,并为其分配了网站MySite的站点角色Site Approver。

我希望属于此用户组的用户还可以继承MySite的站点批准者角色,即继承此站点角色的权限。

但是用户不会继承站点角色权限,并且在控制面板中的MySite站点成员身份中,用户站点角色为空。

我该如何解决?我应该编写一个钩子,定期将站点角色添加到具有站点角色的用户组成员吗?

2 个答案:

答案 0 :(得分:0)

Liferay不会在员工角色配置文件中显示您的站点角色“站点批准者”,因为该角色未与单个用户关联,而是在用户组中分配。

但是,只要用户是您的用户组“MySite审批者”的成员,就应该授予用户“站点批准者”中定义的权限。

Liferay文档link here说:

  

这是具有适当角色的门户网站用户审核内容和的地方   决定拒绝它(将其移回开头)或接受它   (将其转换到下一步)。

因此,对于工作流程,与用户建立直接角色关联非常重要。不是与用户相关的某种权限。

我想这是功能设计的方式。我不认为这是一个错误,因为工作流程不期望任何权限,但希望用户成为角色的成员。

答案 1 :(得分:0)

我遇到了类似的问题,尝试通过每个注册的Portal用户继承组织角色。经过大量测试后,我意识到只有常规角色会被传播,并且PermissionChecker和RoleLocalServiceUtil会按预期运行。

如果您尝试创建常规角色而不是网站角色,则可以将该角色分配给用户,用户组,组织或网站 enter image description here 我仍然无法找到有关常规,组织和网站角色之间差异的完整文档,但我得到的印象是,例如网站角色不是您分配给所有用户的角色网站

更新:我打开了liferay 6.1.0的源代码并注意到了doc的文档 的 RoleLocalServiceUtil.hasUserRole

/**
* Returns <code>true</code> if the user is associated with the named
* regular role.
*
* @param userId the primary key of the user
* @param companyId the primary key of the company
* @param name the name of the role
* @param inherited whether to include the user's inherited roles in the
search
* @return <code>true</code> if the user is associated with the regular
role; <code>false</code> otherwise
* @throws PortalException if a role with the name could not be found in the
company or if a default user for the company could not be found
* @throws SystemException if a system exception occurred
*/
public static boolean hasUserRole(long userId, long companyId,
    java.lang.String name, boolean inherited)
    throws com.liferay.portal.kernel.exception.PortalException,
        com.liferay.portal.kernel.exception.SystemException {
    return getService().hasUserRole(userId, companyId, name, inherited);
}

注意&#34; 常规角色&#34;

现在我没有时间检查所有引用回到此功能,但对我而言,它清楚地表明Liferay的角色/权限检查机制,可能不适用于任何角色类型