4

在 Liferay 中,当添加站点页面时,会自动为角色、角色和角色分配VIEW权限。OwnerGuestSite Member

是否可以在创建页面时将权限动态分配给自定义角色,而不是从站点页面的管理权限选项卡VIEW手动分配权限?VIEW

4

1 回答 1

6

一种可能的方法是LayoutListener通过钩子使用

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

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

请参见以下示例:

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

LayoutListener是在 package 下创建的自定义类com.smb.mypermissions.hook.listeners以覆盖 default 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>");
于 2013-04-23T12:43:41.880 回答