【问题标题】:How to assign Permissions to site page dynamically when created创建时如何为网站页面动态分配权限
【发布时间】:2013-04-23 12:05:12
【问题描述】:

在 Liferay 中添加站点页面时,会自动为 Owner 角色、Guest 角色和 Site Member 角色分配 VIEW 权限。

是否可以在创建页面时将VIEW 权限动态分配给自定义角色,而不是从站点页面的“管理权限”选项卡手动分配VIEW 权限?

【问题讨论】:

    标签: liferay liferay-6


    【解决方案1】:

    一种可能的方法是通过钩子使用LayoutListener

    为此,您需要创建钩子(门户属性)并覆盖以下属性:

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

    【讨论】:

      猜你喜欢
      • 2012-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-15
      • 1970-01-01
      • 2015-02-20
      • 2023-03-28
      • 2018-01-31
      相关资源
      最近更新 更多