我们可以为门户网站定义自定义权限吗?

Pra*_*h K 7 permissions administration liferay liferay-6

环境:Liferay 6.1 GA3 EE

我们可以为门户网站定义自定义权限吗?

我们可以通过创建带有<portlet-resource>标记的XML 并<action-key>在其中定义来在我们的插件portlet中创建自定义权限.

当我在控制面板中为角色定义权限时,我的portlet出现在该部分中Site Applications,现在我想要的是在portlet或钩子中创建自定义权限(而不是通过EXT)应该有一个单独的类别,My Custom并且应该有自定义喜欢的权限<action-key>ACCESS_EMAIL</action-key>,<action-key>ACCESS_TOOLSET<\action-key>等等.

简而言之,Portal当我定义自定义Portal(常规)角色的权限时,我的自定义类别应出现在如下图所示的部分中:

门户定义权限

我想使用此权限不是为了特定的portlet,而是需要在jsp-hooks或我的任何其他自定义portlet中使用它.就像我们ADD_SITE,ADD_USER在等权限Portal- > General,我想有这些权限为一般.

编辑
为了使portlet出现在我创建一个简单的自定义portlet的任何部分中,所以portlet出现在该Site Application部分中,如果我想,我也可以使它出现在这些Control Panel部分中.

但现在问题是我在这个portlet中没有任何视图或任何实现,因此我通过更新liferay-display.xml并将其置于隐藏状态来隐藏它category.hidden.这也隐藏了Define Permission下拉菜单.

如果我不使用lifeay-display.xmlliferay,则在Undefined+Adddockbar中的菜单访问时将其置于类别下.:-(

谢谢

Pra*_*h K 8

这就是我们实现它的方式:

  1. 使用此portlet的权限文件创建自定义portlet,/resource-actions/custompermission.xml以指定我们想要的不同自定义权限.完整步骤与此Wiki相同.
  2. 使这个portlet成为一个隐藏的portlet,这样它就不会出现Add在dockbar 的菜单中,既不会出现在控制面板中,也不会出现在Define Permissions下拉列表中.
  3. 现在创建一个JSP钩子(您可以创建一个单独的插件或在第1点中定义的自定义portlet中包含钩子)并修改/docroot/html/portlet/roles_admin/edit_role_permissions_navigation.jspf以包含我们的自定义类别:

    <aui:form action="<%= currentURL %>" name="resourceSelection">
        <aui:fieldset>
            <aui:select changesContext="<%= true %>" name="add-permissions" onchange='<%= renderResponse.getNamespace() + "addPermissions(this);" %>'>
                <aui:option label="" />
    
                <%-- Our customization starts here  --%>
    
                <%--
                    We have added our very own option group but this is not required just the <aui:option> will do
                --%>
                <optgroup label="<liferay-ui:message key="custom" />">
    
                <%
                if (_isCustomPermissionsPortlet(CUSTOM_PERMISSIONS_PORTLET)) {
    
                    editPermissionsURL.setParameter("portletResource", CUSTOM_PERMISSIONS_PORTLET);
                    editPermissionsURL.setParameter("showModelResources", "0");
                %>
    
                    <%--
                        and here we add our own Permission category drop-down option
                    --%>
    
                    <aui:option label="custom-permissions"
                            selected="<%= _isCurrent(editPermissionsURL.toString(), portletResource, showModelResources) %>"
                            value="<%= editPermissionsURL.toString() %>" />
    
                <%
                }
                %>
                </optgroup>
                <%-- Our customization ends here --%>
    
            <c:choose>
                <c:when test="<%= role.getType() == RoleConstants.TYPE_SITE %>">
                    <optgroup label="<liferay-ui:message key="administration" />">
    
                    <% // Other liferay stuff continues ...
    
    Run Code Online (Sandbox Code Playgroud)

    在JSP结束时,我们有:

    // ... other liferay stuff 
    
    private boolean _isOrganizationPortlet(String portletId) {
        return ArrayUtil.contains(_ORGANIZATION_PORTLETS, portletId);
    }
    
    private boolean _isPortalPortlet(String portletId) {
        return ArrayUtil.contains(_PORTAL_PORTLETS, portletId);
    }
    
    // Our customization starts here
    // portlet's ID
    public static final String CUSTOM_PERMISSIONS_PORTLET = "CustomPermissions_WAR_CustomPermissionsportlet";
    
    private static final String[] _CUSTOM_PERMISSIONS_PORTLET = {
        CUSTOM_PERMISSIONS_PORTLET,
    };
    
    private boolean _isCustomPermissionsPortlet(String portletId) {
        return ArrayUtil.contains(_CUSTOM_PERMISSIONS_PORTLET, portletId);
    }
    
    // Our customization ends here
    
    Run Code Online (Sandbox Code Playgroud)

    这是它在控制面板中的外观:

    我们也可以Portal通过将自定义代码移动到JSP中的那个位置来移动该部分中的权限.

    拥有它的优点是,当我们想要为站点角色设置定义权限时,它将显示.

希望这有助于某人.