2013-04-23 16 views
4

在Liferay添加网站页面时,它自动为Owner角色分配VIEW权限,角色Guest角色和Site Member角色。如何在创建动态时将权限分配给网站页面

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

回答

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是在包下创建的自定义类3210覆盖默认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 
    }); 

其中的作用可以从以下地址获得RoleLocalServiceUtilprimkey是页面唯一ID,即plid

long primKey = model.getPlid(); 

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

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