/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.login.web.internal.portlet.util;
import com.liferay.login.web.constants.LoginPortletKeys;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.language.LanguageUtil;
import com.liferay.portal.kernel.model.Company;
import com.liferay.portal.kernel.model.CompanyConstants;
import com.liferay.portal.kernel.model.User;
import com.liferay.portal.kernel.portlet.PortletURLFactoryUtil;
import com.liferay.portal.kernel.security.auth.session.AuthenticatedSessionManagerUtil;
import com.liferay.portal.kernel.service.ServiceContext;
import com.liferay.portal.kernel.service.ServiceContextFactory;
import com.liferay.portal.kernel.service.UserLocalServiceUtil;
import com.liferay.portal.kernel.theme.ThemeDisplay;
import com.liferay.portal.kernel.util.CookieKeys;
import com.liferay.portal.kernel.util.HtmlUtil;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.PortalUtil;
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.util.PropsValues;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.portlet.ActionRequest;
import javax.portlet.PortletMode;
import javax.portlet.PortletModeException;
import javax.portlet.PortletPreferences;
import javax.portlet.PortletRequest;
import javax.portlet.PortletURL;
import javax.portlet.WindowState;
import javax.portlet.WindowStateException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* @author Brian Wing Shun Chan
* @author Scott Lee
*/
public class LoginUtil {
/**
* @deprecated As of 1.1.0, replaced by {@link
* AuthenticatedSessionManagerUtil#getAuthenticatedUserId(
* HttpServletRequest, String, String, String)}
*/
@Deprecated
public static long getAuthenticatedUserId(
HttpServletRequest request, String login, String password,
String authType)
throws PortalException {
return AuthenticatedSessionManagerUtil.getAuthenticatedUserId(
request, login, password, authType);
}
public static Map<String, String> getEmailDefinitionTerms(
PortletRequest portletRequest, String emailFromAddress,
String emailFromName, boolean showPasswordTerms) {
ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
WebKeys.THEME_DISPLAY);
Map<String, String> definitionTerms = new LinkedHashMap<>();
definitionTerms.put(
"[$FROM_ADDRESS$]", HtmlUtil.escape(emailFromAddress));
definitionTerms.put("[$FROM_NAME$]", HtmlUtil.escape(emailFromName));
if (showPasswordTerms) {
definitionTerms.put(
"[$PASSWORD_RESET_URL$]",
LanguageUtil.get(
themeDisplay.getLocale(), "the-password-reset-url"));
}
Company company = themeDisplay.getCompany();
definitionTerms.put("[$PORTAL_URL$]", company.getVirtualHostname());
definitionTerms.put(
"[$REMOTE_ADDRESS$]",
LanguageUtil.get(
themeDisplay.getLocale(), "the-browser's-remote-address"));
definitionTerms.put(
"[$REMOTE_HOST$]",
LanguageUtil.get(
themeDisplay.getLocale(), "the-browser's-remote-host"));
definitionTerms.put(
"[$TO_ADDRESS$]",
LanguageUtil.get(
themeDisplay.getLocale(),
"the-address-of-the-email-recipient"));
definitionTerms.put(
"[$TO_NAME$]",
LanguageUtil.get(
themeDisplay.getLocale(), "the-name-of-the-email-recipient"));
definitionTerms.put(
"[$USER_ID$]",
LanguageUtil.get(themeDisplay.getLocale(), "the-user-id"));
if (showPasswordTerms) {
definitionTerms.put(
"[$USER_PASSWORD$]",
LanguageUtil.get(
themeDisplay.getLocale(), "the-user-password"));
}
definitionTerms.put(
"[$USER_SCREENNAME$]",
LanguageUtil.get(themeDisplay.getLocale(), "the-user-screen-name"));
return definitionTerms;
}
public static String getEmailFromAddress(
PortletPreferences preferences, long companyId) {
return PortalUtil.getEmailFromAddress(
preferences, companyId, PropsValues.LOGIN_EMAIL_FROM_ADDRESS);
}
public static String getEmailFromName(
PortletPreferences preferences, long companyId) {
return PortalUtil.getEmailFromName(
preferences, companyId, PropsValues.LOGIN_EMAIL_FROM_NAME);
}
public static String getLogin(
HttpServletRequest request, String paramName, Company company) {
String login = request.getParameter(paramName);
if ((login == null) || login.equals(StringPool.NULL)) {
login = CookieKeys.getCookie(request, CookieKeys.LOGIN, false);
if (PropsValues.COMPANY_LOGIN_PREPOPULATE_DOMAIN &&
Validator.isNull(login) &&
company.getAuthType().equals(CompanyConstants.AUTH_TYPE_EA)) {
login = "@".concat(company.getMx());
}
}
return login;
}
public static PortletURL getLoginURL(HttpServletRequest request, long plid)
throws PortletModeException, WindowStateException {
PortletURL portletURL = PortletURLFactoryUtil.create(
request, LoginPortletKeys.LOGIN, plid, PortletRequest.RENDER_PHASE);
portletURL.setParameter("saveLastPath", Boolean.FALSE.toString());
portletURL.setParameter("mvcRenderCommandName", "/login/login");
portletURL.setPortletMode(PortletMode.VIEW);
portletURL.setWindowState(WindowState.MAXIMIZED);
return portletURL;
}
/**
* @deprecated As of 1.1.0, replaced by {@link
* AuthenticatedSessionManagerUtil#login(HttpServletRequest,
* HttpServletResponse, String, String, boolean, String)}
*/
@Deprecated
public static void login(
HttpServletRequest request, HttpServletResponse response,
String login, String password, boolean rememberMe, String authType)
throws Exception {
AuthenticatedSessionManagerUtil.login(
request, response, login, password, rememberMe, authType);
}
/**
* @deprecated As of 1.1.0, replaced by {@link
* AuthenticatedSessionManagerUtil#renewSession(
* HttpServletRequest, HttpSession)}
*/
@Deprecated
public static HttpSession renewSession(
HttpServletRequest request, HttpSession session)
throws Exception {
return AuthenticatedSessionManagerUtil.renewSession(request, session);
}
public static void sendPassword(ActionRequest actionRequest)
throws Exception {
String toAddress = ParamUtil.getString(actionRequest, "emailAddress");
sendPassword(actionRequest, null, null, toAddress, null, null);
}
public static void sendPassword(
ActionRequest actionRequest, String fromName, String fromAddress,
String toAddress, String subject, String body)
throws Exception {
HttpServletRequest request = PortalUtil.getHttpServletRequest(
actionRequest);
ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
WebKeys.THEME_DISPLAY);
Company company = themeDisplay.getCompany();
if (!company.isSendPassword() && !company.isSendPasswordResetLink()) {
return;
}
ServiceContext serviceContext = ServiceContextFactory.getInstance(
User.class.getName(), actionRequest);
UserLocalServiceUtil.sendPassword(
company.getCompanyId(), toAddress, fromName, fromAddress, subject,
body, serviceContext);
}
/**
* @deprecated As of 1.1.0, replaced by {@link
* AuthenticatedSessionManagerUtil#signOutSimultaneousLogins(
* long)}
*/
@Deprecated
public static void signOutSimultaneousLogins(long userId) throws Exception {
AuthenticatedSessionManagerUtil.signOutSimultaneousLogins(userId);
}
}