2012-01-30 3 views
8

Sto usando Liferay 6.0. Ho più organizzazioni e vorrei modificare la pagina di destinazione dell'utente in base all'organizzazione.Liferay: cambia la pagina di destinazione degli utenti a seconda dell'organizzazione

Sono nuovo di Liferay, ho cercato di trovare alcuni suggerimenti ma non ho trovato la risposta corretta.

È possibile utilizzare strumenti già pronti per l'uso? senza scrivere un codice?

Se il codice è necessario, qual è la soluzione migliore?

Please help, Grazie

risposta

7

Nel Liferay 6 del default landing page può essere impostato con la proprietà default.landing.page.path, ma è uno scenario generale che colpisce ogni utente nell'istanza portale.

Per modificare la pagina di destinazione di un utente in base all'organizzazione è necessaria un'azione personalizzata per "post login" portal event. Alla fine, la proprietà login.events.post deve puntare ad un'azione di login personalizzato:

login.events.post=yourcode.CustomLandingPageAction 

Ci sono due opzioni per raggiungere questo obiettivo:

Un'azione personalizzata per far sbarcare l'utente di un'organizzazione in Pagine private dell'organizzazione (derivate dai link sopra):

public class CustomLandingPageAction extends Action { 

    public void run(HttpServletRequest request, HttpServletResponse response) throws ActionException { 
      try { 
        doRun(request, response); 
      } catch (Exception e) { 
        throw new ActionException(e); 
      } 
    } 

    protected void doRun(HttpServletRequest request, HttpServletResponse response) 
      throws Exception { 

     long companyId = PortalUtil.getCompanyId(request); 
     String path = PrefsPropsUtil.getString(companyId, PropsKeys.DEFAULT_LANDING_PAGE_PATH);; 

     if (Validator.isNull(path)) { 
      User user = PortalUtil.getUser(request); 
      String language = user.getLocale().getLanguage(); 
      List<Organization> orgList = OrganizationLocalServiceUtil.getUserOrganizations(user.getUserId()); 

      // Default landing page: go to the path in DefaultLandingPageAction 
      LastPath lastPath = new LastPath(StringPool.BLANK, path, new HashMap<String, String[]>()); 

      // But if the logged user is in some community 
      if (!orgList.isEmpty()){ 
       // and such community has a private page 
       if (orgList.get(0).hasPrivateLayouts()) { 
        // go there instead 
        String orgFriendlyURL = orgList.get(0).getGroup().getFriendlyURL(); 
        String myPath = "/" + language + "/group" + orgFriendlyURL; 

        lastPath = new LastPath(StringPool.BLANK, myPath); 
       } 
      } 

      HttpSession session = request.getSession();       
      session.setAttribute(WebKeys.LAST_PATH, lastPath); 
     } 
    } 
} 
+0

Grazie mille per la risposta rapida. Ecco cosa ho fatto: –

Problemi correlati