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>");