package org.beesden.shop.view;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.web.savedrequest.HttpSessionRequestCache;
import org.springframework.security.web.savedrequest.SavedRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("/customer/")
public class CustomerView extends ViewUpdate {
private String getRedirectUrl(HttpServletRequest request, HttpServletResponse response) {
SavedRequest savedRequest = new HttpSessionRequestCache().getRequest(request, response);
if (savedRequest != null) {
return savedRequest.getRedirectUrl();
}
return request.getContextPath() + "/";
}
@RequestMapping(value = "/loginfailed", method = RequestMethod.GET)
public String loginerror(ModelMap model, HttpServletRequest request, HttpServletResponse response) {
logger.info("Error logging in");
Long start = System.currentTimeMillis();
Map<String, Object> config = getConfig(request);
String layout = "account.login";
// Get the url from the spring cache
try {
URL redirect = new URL(getRedirectUrl(request, response));
layout = redirect.getPath().replaceFirst("^/([^/]+).*$", "$1\\.login");
} catch (MalformedURLException e) {
e.printStackTrace();
}
if (layout.equals("checkout.login")) {
return isCheckout(model, request, layout);
}
List<String> errors = new ArrayList<String>();
errors = addError(errors, "login.error");
request.getSession().setAttribute("messages", errors);
return isAjax(model, request, layout, config, start);
}
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String registerCustomer(ModelMap model, HttpServletRequest request, HttpServletResponse response) {
logger.info("Received request to register new customer");
return "redirect:" + (registerCustomer(request) ? getRedirectUrl(request, response) : "/checkout/login");
}
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String showLogin(ModelMap model, HttpServletRequest request, HttpServletResponse response) {
logger.info("Received request to show login page");
Long start = System.currentTimeMillis();
Map<String, Object> config = getConfig(request);
String layout = "account.login";
// Get the url from the spring cache
try {
URL redirect = new URL(getRedirectUrl(request, response));
layout = redirect.getPath().replaceFirst("^/([^/]+).*$", "$1\\.login");
} catch (MalformedURLException e) {
e.printStackTrace();
}
// Add 3rd party URLs
if (layout.equals("checkout.login")) {
return isCheckout(model, request, layout);
}
return isAjax(model, request, layout, config, start);
}
}