2013-04-09 11 views
7

Ambiente: Liferay 6.1 GA3 EEPossiamo avere autorizzazioni personalizzate definite per il portale?

Possiamo avere autorizzazioni personalizzate definite per il portale?

Possiamo creare permessi personalizzati nel nostro portlet plugin tramite la creazione di un XML con il tag <portlet-resource> e la definizione dello <action-key> al suo interno.

E quando vado a definire le autorizzazioni per un ruolo nel Pannello di controllo il mio portlet viene visualizzato nella sezione Site Applications, ora quello che voglio è creare autorizzazioni personalizzate (non tramite EXT) in un portlet o hook che dovrebbe avere una categoria separata come My Custom e dovrebbe avere autorizzazioni personalizzate come <action-key>ACCESS_EMAIL</action-key>, <action-key>ACCESS_TOOLSET<\action-key> ecc

in breve la mia categoria personalizzata dovrebbe comparire all'interno della sezione Portal come mostrato nella figura seguente, mentre io definisco l'autorizzazione per un portale (regolare) ruolo personalizzato:

Portal Define Permissions

Vorrei utilizzare questa autorizzazione non per un portlet specifico ma è necessario utilizzarlo all'interno di jsp-hooks o di qualsiasi altro portlet personalizzato. Proprio come abbiamo le autorizzazioni ADD_SITE, ADD_USER ecc. In Portal ->General, voglio avere queste autorizzazioni come generiche.

Modifica
Per rendere il portlet apparire in qualsiasi della sezione ho creato un semplice custom-portlet, quindi il portlet è apparso nella sezione Site Application e se voglio posso farlo apparire nelle Control Panel sezioni anche.

Ma ora il problema è che non ho alcuna vista né alcuna implementazione in questo portlet quindi la faccio nascosta aggiornando liferay-display.xml e mettendola sotto category.hidden. Questo lo nasconde anche dal menu a discesa Define Permission.

E se io non uso il Liferay lifeay-display.xml lo mette sotto la categoria Undefined durante l'accesso dal +Add menu dockbar. :-(

Thank You

+0

Cosa vorresti che questi tasti personalizzati facessero? Se si sta sviluppando un portlet, è possibile definirlo all'interno del portlet e verrà visualizzato in tale elenco nella posizione appropriata. –

+0

@rp. Ho aggiornato la mia domanda su come voglio utilizzare le autorizzazioni. Grazie –

+0

Vedo cosa stai cercando di realizzare, ma sfortunatamente non penso che sia una funzionalità disponibile. –

risposta

8

Questo è come abbiamo raggiunto è:

  1. Creare un portlet personalizzato con il file di autorizzazioni per questo portlet come /resource-actions/custompermission.xml per specificare le diverse autorizzazioni personalizzate vogliamo che il pieno. passaggi sono identici a this wiki.
  2. rendere questo portlet un portlet nascosta in modo che non apparirà nel menu Add in dockbar, né in del pannello di controllo né nel Define Permissions discesa.
  3. Ora creare un hook JSP (è possibile creare un plug-in separato o includere l'hook nel portlet personalizzato definito al punto n.1) e modificare il /docroot/html/portlet/roles_admin/edit_role_permissions_navigation.jspf per includere la nostra categoria personalizzata:

    <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 ... 
    

    e alla fine della JSP abbiamo:

    // ... 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 
    

    Questo è come appare nel pannello di controllo:

    Custom permissions in the Control Panel

    Siamo in grado di spostare le autorizzazioni nel Portal e spostando il nostro codice personalizzato in quel punto nel JSP.

    Il vantaggio di averlo sopra è che verrà visualizzato quando vogliamo impostare Definisci permessi per il ruolo del sito.

Spero che questo aiuti qualcuno.

+1

Grazie Prakash K ... È stato bello imparare – suyash

+1

Ciao Prakash K, potresti darmi qualche codice di esempio su questo? Sono confuso su di esso. Grazie –

+0

Grazie, molto utile –

Problemi correlati