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