【发布时间】:2015-06-15 17:20:30
【问题描述】:
我正在使用 Liferay 并希望在用户登录后显示不同的登录页面:如果门户网站的管理员尝试登录,他将登录到页面 A,如果访客登录到门户网站,他将登录到页面B. @Today15 我已经做到了..
package com.landing.page.pagetwo;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.events.Action;
import com.liferay.portal.kernel.events.ActionException;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.struts.LastPath;
import com.liferay.portal.kernel.util.PrefsPropsUtil;
import com.liferay.portal.kernel.util.PropsKeys;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.model.Group;
import com.liferay.portal.model.User;
import com.liferay.portal.service.GroupLocalServiceUtil;
import com.liferay.portal.util.PortalUtil;
public class LandingPage extends Action {
@Override
public void run(HttpServletRequest httpsreq, HttpServletResponse httpsres)
throws ActionException {
try {
doRun(httpsreq, httpsres);
}
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 (_log.isInfoEnabled()) {
_log.info(PropsKeys.DEFAULT_LANDING_PAGE_PATH + StringPool.EQUAL +
path);
}
if (Validator.isNull(path)) {
path = getCustomLandingPage(request);
}
HttpSession session = request.getSession();
session.setAttribute(WebKeys.LAST_PATH, new LastPath(
StringPool.BLANK, path));
}
private String getCustomLandingPage(HttpServletRequest request)
throws PortalException, SystemException {
String customLandingPagePath = StringPool.BLANK;
customLandingPagePath = getSitePath(PortalUtil.getUser(request), false);
return customLandingPagePath;
}
private String getSitePath(User user, boolean includeLanguage)
throws PortalException, SystemException {
String sitePath = StringPool.BLANK;
List<Group> userSites = getSites(user.getUserId());
String language = StringPool.BLANK;
if (includeLanguage) {
language = StringPool.SLASH + user.getLocale().getLanguage();
}
if ((userSites != null) && !userSites.isEmpty()) {
String siteFriendlyURL = userSites.get(0).getFriendlyURL();
sitePath = language + "/group" + siteFriendlyURL + "/pagetwo";
}
return sitePath;
}
private List<Group> getSites(long userId)
throws PortalException, SystemException {
List<Group> sites = new ArrayList<Group>();
for (Group group : GroupLocalServiceUtil.getUserGroups(userId)) {
if (group.isRegularSite() &&
!"Guest".equalsIgnoreCase(group.getName())) {
sites.add(group);
break;
}
}
return sites;
}
private static Log _log =
LogFactoryUtil.getLog(LandingPage.class);
}
现在我可以登陆我网站的自定义页面。但是如何限制其他用户从该页面登陆,以及如何将他们登陆到其他页面。
【问题讨论】:
标签: liferay