Liferay:根据组织更改用户登录页面

时间:2012-01-30 22:13:39

标签: java liferay

我正在使用Liferay 6.0。我有多个组织,并希望根据组织更改用户的目标网页。

我是Liferay的新手,试图找到一些建议,但找不到正确答案。

是否可以使用开箱即用的工具?没有编写代码?

如果需要代码,最佳解决方案是什么?

请帮忙, 谢谢

1 个答案:

答案 0 :(得分:7)

在Liferay 6中,可以使用属性default.landing.page.path设置default landing page,但它是影响门户网站实例中每个用户的一般设置。

要根据组织更改用户的登录页面,需要"post login" portal event的自定义操作。最终,属性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);
        }
    }
}