在Liferay中添加网站页面时,会VIEW自动为Owner角色,Guest角色和Site Member角色分配权限.
是否可以在VIEW创建页面时动态地将权限分配给自定义角色,而不是VIEW从站点页面的"管理权限"选项卡手动分配权限?
其中一种可能的方法是使用LayoutListenervia hook
为此,您需要创建钩子(门户网站属性)并覆盖以下属性:
value.object.listener.com.liferay.portal.model.Layout
Run Code Online (Sandbox Code Playgroud)
请参阅以下示例:
value.object.listener.com.liferay.portal.model.Layout=com.smb.mypermissions.hook.listeners.LayoutListener
Run Code Online (Sandbox Code Playgroud)
这LayoutListener是在包com.smb.mypermissions.hook.listeners下创建的自定义类,以覆盖默认值LayoutListener.
本课程签名: public class LayoutListener extends BaseModelListener<Layout>
现在覆盖该方法
public void onAfterCreate(Layout model)throws ModelListenerException
Run Code Online (Sandbox Code Playgroud)
要为角色分配权限,请使用以下一个班轮:
ResourcePermissionLocalServiceUtil.setResourcePermissions(
companyId, Layout.class.getName(),
ResourceConstants.SCOPE_INDIVIDUAL,
String.valueOf(primKey), role.getRoleId(),
new String[] {
ActionKeys.VIEW
});
Run Code Online (Sandbox Code Playgroud)
可以从哪里获取角色,RoleLocalServiceUtil并且primkey是页面唯一ID即plid
long primKey = model.getPlid();
long companyId = model.getGroup().getCompanyId();
Role role = RoleLocalServiceUtil.fetchRole(companyId, "<Your Role name here>");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1678 次 |
| 最近记录: |