如何在创建时动态地为网站页面分配权限

时间:2013-04-23 12:05:13

标签: liferay liferay-6

在Liferay中添加网站页面时,会自动为VIEW角色,Owner角色和Guest角色分配Site Member权限。

是否可以在创建页面时动态地为自定义角色分配VIEW权限,而不是从网站页面的“管理权限”选项卡中手动分配VIEW权限?

1 个答案:

答案 0 :(得分:6)

其中一种可能的方法是通过钩子

使用LayoutListener

为此,您需要创建hook(门户网站属性)并覆盖以下属性:

value.object.listener.com.liferay.portal.model.Layout

请参阅以下示例:

value.object.listener.com.liferay.portal.model.Layout=com.smb.mypermissions.hook.listeners.LayoutListener

此处LayoutListener是在包com.smb.mypermissions.hook.listeners下创建的自定义类,以覆盖默认LayoutListener

此课程的签名:public class LayoutListener extends BaseModelListener<Layout>

现在覆盖方法

public void onAfterCreate(Layout model)throws ModelListenerException

为角色分配权限,请使用以下一行:

ResourcePermissionLocalServiceUtil.setResourcePermissions(
    companyId, Layout.class.getName(),
    ResourceConstants.SCOPE_INDIVIDUAL,
    String.valueOf(primKey), role.getRoleId(),
    new String[] {
        ActionKeys.VIEW
    });

可以从RoleLocalServiceUtil获取角色,而primkey是页面唯一ID,plid

long primKey = model.getPlid();

long companyId = model.getGroup().getCompanyId();

Role role = RoleLocalServiceUtil.fetchRole(companyId, "<Your Role name here>");