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(HttpServletRequest req, HttpServletResponse res)
49 throws AutoLoginException {
50
51 try {
52 String[] credentials = null;
53
54 String autoUserId = CookieKeys.getCookie(req, CookieKeys.ID);
55 String autoPassword = CookieKeys.getCookie(
56 req, CookieKeys.PASSWORD);
57 String rememberMe = CookieKeys.getCookie(
58 req, CookieKeys.REMEMBER_ME);
59
60
62 if (!PortalUtil.getPathContext().equals(req.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(req);
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(res, cookie);
97
98 cookie = new Cookie(CookieKeys.PASSWORD, StringPool.BLANK);
99
100 cookie.setMaxAge(0);
101 cookie.setPath(StringPool.SLASH);
102
103 CookieKeys.addCookie(res, cookie);
104
105 throw new AutoLoginException(e);
106 }
107 }
108
109 private static Log _log = LogFactory.getLog(RememberMeAutoLogin.class);
110
111 }