在 Liferay 中,当添加站点页面时,会自动为角色、角色和角色分配VIEW
权限。Owner
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
是在 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>");