1
22
23 package com.liferay.portal.action;
24
25 import com.liferay.portal.events.EventsProcessor;
26 import com.liferay.portal.kernel.util.StringPool;
27 import com.liferay.portal.kernel.util.Validator;
28 import com.liferay.portal.struts.ActionConstants;
29 import com.liferay.portal.util.CookieKeys;
30 import com.liferay.portal.util.PropsUtil;
31
32 import javax.servlet.http.Cookie;
33 import javax.servlet.http.HttpServletRequest;
34 import javax.servlet.http.HttpServletResponse;
35 import javax.servlet.http.HttpSession;
36 import javax.servlet.jsp.PageContext;
37
38 import org.apache.struts.action.Action;
39 import org.apache.struts.action.ActionForm;
40 import org.apache.struts.action.ActionForward;
41 import org.apache.struts.action.ActionMapping;
42
43
49 public class LogoutAction extends Action {
50
51 public ActionForward execute(
52 ActionMapping mapping, ActionForm form, HttpServletRequest req,
53 HttpServletResponse res)
54 throws Exception {
55
56 try {
57 HttpSession ses = req.getSession();
58
59 EventsProcessor.process(PropsUtil.getArray(
60 PropsUtil.LOGOUT_EVENTS_PRE), req, res);
61
62 String domain = CookieKeys.getDomain(req);
63
64 Cookie companyIdCookie = new Cookie(
65 CookieKeys.COMPANY_ID, StringPool.BLANK);
66
67 if (Validator.isNotNull(domain)) {
68 companyIdCookie.setDomain(domain);
69 }
70
71 companyIdCookie.setMaxAge(0);
72 companyIdCookie.setPath(StringPool.SLASH);
73
74 Cookie idCookie = new Cookie(CookieKeys.ID, StringPool.BLANK);
75
76 if (Validator.isNotNull(domain)) {
77 idCookie.setDomain(domain);
78 }
79
80 idCookie.setMaxAge(0);
81 idCookie.setPath(StringPool.SLASH);
82
83 Cookie passwordCookie = new Cookie(
84 CookieKeys.PASSWORD, StringPool.BLANK);
85
86 if (Validator.isNotNull(domain)) {
87 passwordCookie.setDomain(domain);
88 }
89
90 passwordCookie.setMaxAge(0);
91 passwordCookie.setPath(StringPool.SLASH);
92
93 CookieKeys.addCookie(res, companyIdCookie);
94 CookieKeys.addCookie(res, idCookie);
95 CookieKeys.addCookie(res, passwordCookie);
96
97 try {
98 ses.invalidate();
99 }
100 catch (Exception e) {
101 }
102
103 EventsProcessor.process(PropsUtil.getArray(
104 PropsUtil.LOGOUT_EVENTS_POST), req, res);
105
106 return mapping.findForward(ActionConstants.COMMON_REFERER);
107 }
108 catch (Exception e) {
109 req.setAttribute(PageContext.EXCEPTION, e);
110
111 return mapping.findForward(ActionConstants.COMMON_ERROR);
112 }
113 }
114
115 }