Liferay: изменение целевой страницы пользователя в зависимости от организации - PullRequest
8 голосов
/ 31 января 2012

Я использую Liferay 6.0.У меня несколько организаций, и я хочу изменить целевую страницу пользователя в зависимости от организации.

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

Если код нужен, какое лучшее решение?

Пожалуйста, помогите, спасибо

1 Ответ

7 голосов
/ 31 января 2012

В Liferay 6 целевую страницу по умолчанию можно установить со свойством default.landing.page.path, но это общий параметр, влияющий на каждого пользователя в экземпляре портала.

Чтобы изменить целевую страницуНа странице пользователя в зависимости от организации требуется настраиваемое действие для события портала «post login» .В конце концов, свойство login.events.post должно указывать на пользовательское действие входа в систему:

login.events.post=yourcode.CustomLandingPageAction

Для этого есть два варианта:

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

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);
        }
    }
}
...