2013-04-23 55 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>"); 
相關問題