package org.fluxtream.core.auth; import org.codehaus.jackson.map.ObjectMapper; import org.springframework.security.core.AuthenticationException; import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.HashMap; import java.util.Map; public class FlxAuthFailureHandler extends SimpleUrlAuthenticationFailureHandler { private ObjectMapper objectMapper = new ObjectMapper(); @Override public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException { if (request.getHeader("X-DEV-WEBSITE")!=null) { Map<String, Object> status = new HashMap<String, Object>(); status.put("authd", new Boolean(false)); status.put("message", exception.getMessage()); response.setContentType("application/json"); response.getWriter().write(objectMapper.writeValueAsString(status)); } else if (request.getHeader("User-Agent").indexOf("Mobile") != -1) { setDefaultFailureUrl("/mobile/signIn?username=" + request.getParameter("f_username")); } else { setUseForward(false); setDefaultFailureUrl("/welcome?username=" + request.getParameter("f_username")); } super.onAuthenticationFailure(request, response, exception); } }