在Liferay中添加网站页面时,会自动为VIEW
角色,Owner
角色和Guest
角色分配Site Member
权限。
是否可以在创建页面时动态地为自定义角色分配VIEW
权限,而不是从网站页面的“管理权限”选项卡中手动分配VIEW
权限?
答案 0 :(得分:6)
其中一种可能的方法是通过钩子
使用LayoutListener
为此,您需要创建hook(门户网站属性)并覆盖以下属性:
value.object.listener.com.liferay.portal.model.Layout
请参阅以下示例:
value.object.listener.com.liferay.portal.model.Layout=com.smb.mypermissions.hook.listeners.LayoutListener
此处LayoutListener
是在包com.smb.mypermissions.hook.listeners
下创建的自定义类,以覆盖默认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>");