4
在Liferay添加網站頁面時,它自動爲Owner
角色分配VIEW
權限,角色Guest
角色和Site Member
角色。如何在創建動態時將權限分配給網站頁面
是否可以在創建頁面時動態地將VIEW
權限分配給自定義角色,而不是從站點頁面的管理權限選項卡手動分配VIEW
權限?
在Liferay添加網站頁面時,它自動爲Owner
角色分配VIEW
權限,角色Guest
角色和Site Member
角色。如何在創建動態時將權限分配給網站頁面
是否可以在創建頁面時動態地將VIEW
權限分配給自定義角色,而不是從站點頁面的管理權限選項卡手動分配VIEW
權限?
一種可能的方式是通過掛鉤
爲此,您需要創建掛鉤(門戶屬性)使用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
});
其中的作用可以從以下地址獲得RoleLocalServiceUtil
和primkey
是頁面唯一ID,即plid
long primKey = model.getPlid();
long companyId = model.getGroup().getCompanyId();
Role role = RoleLocalServiceUtil.fetchRole(companyId, "<Your Role name here>");