Можно ли определить индивидуальные разрешения для портала?

Среда: Liferay 6.1 GA3 EE

Можно ли определить индивидуальные разрешения для портала?

Мы можем создать пользовательские разрешения в портлете нашего подключаемого модуля, создав XML с тегом <portlet-resource> и определив в нем <action-key>.

И когда я перехожу к определению разрешений для роли на панели управления, мой портлет появляется в разделе Site Applications, теперь я хочу создать настраиваемые разрешения (не через EXT) в портлете или ловушке, которые должны иметь отдельную категорию как My Custom и должны иметь специальные разрешения, например <action-key>ACCESS_EMAIL</action-key>, <action-key>ACCESS_TOOLSET<\action-key> и т. д.

Короче говоря, моя настраиваемая категория должна появиться в разделе Portal, как показано на следующем рисунке, в то время как я определяю разрешение для настраиваемой (обычной) роли портала:

Определить разрешения портала

Я хотел бы использовать это разрешение не для определенного портлета, но мне нужно использовать его внутри jsp-hooks или любых других моих настраиваемых портлетов. Точно так же, как у нас есть ADD_SITE, ADD_USER разрешения в Portal -> General, я хочу, чтобы эти разрешения были общими.

Редактировать
Чтобы портлет отображался в любом разделе, я создал простой настраиваемый портлет, чтобы портлет отображался в разделе Site Application, и, если я хочу, я могу сделать так, чтобы оно появилось и в Control Panel разделах.

Но теперь проблема в том, что у меня нет ни представления, ни реализации в этом портлете, поэтому я скрываю его, обновляя liferay-display.xml и помещая его в category.hidden. Это также скрывает его из раскрывающегося списка Define Permission.

И если я не использую lifeay-display.xml liferay, он помещается в категорию Undefined при доступе к нему из меню +Add на панели док-станции. :-(

Спасибо


person Prakash K    schedule 09.04.2013    source источник
comment
Что бы вы хотели сделать с помощью этих пользовательских ключей? Если вы разрабатываете портлет, вы можете определить их внутри своего портлета, и он будет отображаться в раскрывающемся списке в соответствующем месте.   -  person rp.    schedule 09.04.2013
comment
@rp. Я обновил свой вопрос о том, как я хочу использовать разрешения. Спасибо   -  person Prakash K    schedule 10.04.2013
comment
Я вижу, чего вы пытаетесь достичь, но, к сожалению, не думаю, что это доступная функция.   -  person rp.    schedule 10.04.2013
comment
@rp. Спасибо за помощь. Мои выводы также показывают, что это невозможно. :-( Можете ли вы предложить другую альтернативу, кроме EXT?   -  person Prakash K    schedule 12.04.2013
comment
приятное обучение Но не могли бы вы проверить этот вопрос stackoverflow.com/questions/24840274/   -  person user3595542    schedule 19.07.2014


Ответы (1)


Вот как мы этого добились:

  1. Создайте настраиваемый портлет с файлом разрешений для этого портлета, например /resource-actions/custompermission.xml, чтобы указать различные настраиваемые разрешения, которые нам нужны. Полные шаги идентичны эта вики.
  2. Сделайте этот портлет скрытым, чтобы он не отображался в меню Add на панели док-станции, ни на панели управления, ни в раскрывающемся списке Define Permissions.
  3. Теперь создайте ловушку JSP (вы можете создать отдельный плагин или включить ловушку в настраиваемый портлет, определенный в пункте 1) и измените /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 ...
    

    и в конце 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
    

    Вот как это выглядит в Панели управления:

    Пользовательские разрешения в панели управления

    Мы также можем переместить разрешения в разделе Portal, переместив наш настроенный код в это место в JSP.

    Преимущество его использования выше заключается в том, что он будет отображаться, когда мы хотим установить разрешения для роли сайта.

Надеюсь, это кому-то поможет.

person Prakash K    schedule 25.04.2013
comment
Привет, Пракаш К., не могли бы вы дать мне пример кода об этом? Я смущен этим. Спасибо - person Tom Tang; 05.05.2014
comment
@TomTang Я уже включил в ответ образец кода. Сообщите мне, в чем вы запутались, и мы займемся этим. - person Prakash K; 22.07.2014
comment
Спасибо !, уже разобрался, как работать следую вашему гайду. Хорошее обучение. - person Tom Tang; 24.07.2014