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.PortalUtil;
31 import com.liferay.portal.util.PropsKeys;
32 import com.liferay.portal.util.PropsValues;
33
34 import javax.servlet.http.Cookie;
35 import javax.servlet.http.HttpServletRequest;
36 import javax.servlet.http.HttpServletResponse;
37 import javax.servlet.http.HttpSession;
38
39 import org.apache.struts.action.Action;
40 import org.apache.struts.action.ActionForm;
41 import org.apache.struts.action.ActionForward;
42 import org.apache.struts.action.ActionMapping;
43
44
50 public class LogoutAction extends Action {
51
52 public ActionForward execute(
53 ActionMapping mapping, ActionForm form, HttpServletRequest request,
54 HttpServletResponse response)
55 throws Exception {
56
57 try {
58 HttpSession session = request.getSession();
59
60 EventsProcessor.process(
61 PropsKeys.LOGOUT_EVENTS_PRE, PropsValues.LOGOUT_EVENTS_PRE,
62 request, response);
63
64 String domain = CookieKeys.getDomain(request);
65
66 Cookie companyIdCookie = new Cookie(
67 CookieKeys.COMPANY_ID, StringPool.BLANK);
68
69 if (Validator.isNotNull(domain)) {
70 companyIdCookie.setDomain(domain);
71 }
72
73 companyIdCookie.setMaxAge(0);
74 companyIdCookie.setPath(StringPool.SLASH);
75
76 Cookie idCookie = new Cookie(CookieKeys.ID, StringPool.BLANK);
77
78 if (Validator.isNotNull(domain)) {
79 idCookie.setDomain(domain);
80 }
81
82 idCookie.setMaxAge(0);
83 idCookie.setPath(StringPool.SLASH);
84
85 Cookie passwordCookie = new Cookie(
86 CookieKeys.PASSWORD, StringPool.BLANK);
87
88 if (Validator.isNotNull(domain)) {
89 passwordCookie.setDomain(domain);
90 }
91
92 passwordCookie.setMaxAge(0);
93 passwordCookie.setPath(StringPool.SLASH);
94
95 CookieKeys.addCookie(response, companyIdCookie);
96 CookieKeys.addCookie(response, idCookie);
97 CookieKeys.addCookie(response, passwordCookie);
98
99 try {
100 session.invalidate();
101 }
102 catch (Exception e) {
103 }
104
105 EventsProcessor.process(
106 PropsKeys.LOGOUT_EVENTS_POST, PropsValues.LOGOUT_EVENTS_POST,
107 request, response);
108
109 return mapping.findForward(ActionConstants.COMMON_REFERER);
110 }
111 catch (Exception e) {
112 PortalUtil.sendError(e, request, response);
113
114 return null;
115 }
116 }
117
118 }