package org.openiam.webadmin.login; import java.io.*; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import org.apache.struts.action.*; import org.openiam.idm.srvc.audit.dto.IdmAuditLog; import org.openiam.idm.srvc.auth.service.AuthenticationService; import org.openiam.webadmin.util.AuditHelper; import org.springframework.web.struts.DispatchActionSupport; import org.apache.struts.action.ActionMessages; public class LogoutAction extends DispatchActionSupport { protected AuthenticationService authenticate; protected AuditHelper auditHelper; public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { System.out.println("logout called"); ActionErrors errors = new ActionErrors(); Locale locale = getLocale(request); HttpSession session = request.getSession(); String userId = request.getParameter("userId"); if (userId == null) { userId = (String)session.getAttribute("userId"); } String login = (String)request.getSession().getAttribute("login"); String domain = (String) request.getSession().getAttribute("domainId"); try { if (userId != null) { authenticate.globalLogout(userId); } String nodeIP = null; try { InetAddress addr = InetAddress.getLocalHost(); nodeIP = addr.getHostAddress(); } catch (UnknownHostException e) { e.printStackTrace(); } auditHelper.addLog("LOGOUT", domain, login, "WEBCONSOLE", userId, "0", "AUTHENTICATION", userId, null, "SUCCESS", null, null,null, null,null, null, null, request.getRemoteHost(), login, domain, nodeIP); //session.removeAttribute("userId"); //session.removeAttribute("token"); session.invalidate(); // removes everything // remove time-sensitive token Cookie [] cookies = request.getCookies(); if (cookies!= null) { for (int i = 0; i < cookies.length; i++){ if (cookies[i].getName().equalsIgnoreCase("token")) { cookies[i].setMaxAge(0); response.addCookie(cookies[i]); } } } } catch (Exception e) { e.printStackTrace(); errors.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage("error.logout.failed")); saveErrors(request,errors); return (mapping.findForward("logoutfailed")); } return (mapping.findForward("logout")); } public AuthenticationService getAuthenticate() { return authenticate; } public void setAuthenticate(AuthenticationService authenticate) { this.authenticate = authenticate; } public AuditHelper getAuditHelper() { return auditHelper; } public void setAuditHelper(AuditHelper auditHelper) { this.auditHelper = auditHelper; } }