1
22
23 package com.liferay.portal.security.auth;
24
25 import com.liferay.portal.kernel.util.KeyValuePair;
26 import com.liferay.portal.kernel.util.StringPool;
27 import com.liferay.portal.kernel.util.Validator;
28 import com.liferay.portal.model.Company;
29 import com.liferay.portal.service.UserLocalServiceUtil;
30 import com.liferay.portal.util.CookieKeys;
31 import com.liferay.portal.util.PortalUtil;
32
33 import javax.servlet.http.Cookie;
34 import javax.servlet.http.HttpServletRequest;
35 import javax.servlet.http.HttpServletResponse;
36
37 import org.apache.commons.logging.Log;
38 import org.apache.commons.logging.LogFactory;
39
40
46 public class RememberMeAutoLogin implements AutoLogin {
47
48 public String[] login(
49 HttpServletRequest request, HttpServletResponse response)
50 throws AutoLoginException {
51
52 try {
53 String[] credentials = null;
54
55 String autoUserId = CookieKeys.getCookie(request, CookieKeys.ID);
56 String autoPassword = CookieKeys.getCookie(
57 request, CookieKeys.PASSWORD);
58 String rememberMe = CookieKeys.getCookie(
59 request, CookieKeys.REMEMBER_ME);
60
61
63 if (!PortalUtil.getPathContext().equals(request.getContextPath())) {
64 rememberMe = Boolean.TRUE.toString();
65 }
66
67 if (Validator.isNotNull(autoUserId) &&
68 Validator.isNotNull(autoPassword) &&
69 Validator.isNotNull(rememberMe)) {
70
71 Company company = PortalUtil.getCompany(request);
72
73 KeyValuePair kvp = null;
74
75 if (company.isAutoLogin()) {
76 kvp = UserLocalServiceUtil.decryptUserId(
77 company.getCompanyId(), autoUserId, autoPassword);
78
79 credentials = new String[3];
80
81 credentials[0] = kvp.getKey();
82 credentials[1] = kvp.getValue();
83 credentials[2] = Boolean.FALSE.toString();
84 }
85 }
86
87 return credentials;
88 }
89 catch (Exception e) {
90 _log.warn(e, e);
91
92 Cookie cookie = new Cookie(CookieKeys.ID, StringPool.BLANK);
93
94 cookie.setMaxAge(0);
95 cookie.setPath(StringPool.SLASH);
96
97 CookieKeys.addCookie(response, cookie);
98
99 cookie = new Cookie(CookieKeys.PASSWORD, StringPool.BLANK);
100
101 cookie.setMaxAge(0);
102 cookie.setPath(StringPool.SLASH);
103
104 CookieKeys.addCookie(response, cookie);
105
106 throw new AutoLoginException(e);
107 }
108 }
109
110 private static Log _log = LogFactory.getLog(RememberMeAutoLogin.class);
111
112 }