Rev 17539 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.serving.interceptors;import in.shop2020.serving.services.UserSessionInfo;import in.shop2020.serving.utils.Utils;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.codec.binary.Base64;import org.apache.log4j.Logger;import org.apache.struts2.ServletActionContext;import org.json.JSONObject;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;import de.ailis.pherialize.Pherialize;public class LoginInterceptor extends AbstractInterceptor {/****/private static final long serialVersionUID = 1L;private static Logger log = Logger.getLogger(Class.class);@Overridepublic String intercept(ActionInvocation invocation) throws Exception {HttpServletRequest request = ServletActionContext.getRequest();HttpServletResponse response = ServletActionContext.getResponse();UserSessionInfo userInfo = (UserSessionInfo) request.getAttribute(UserInterceptor.USER_INFO_COOKIE_NAME);if(userInfo.isPrivateDealUser()){response.sendRedirect(getMobileRedirectUrl(String.valueOf(userInfo.getUserId()), request));return null;}if(userInfo == null || !userInfo.isLoggedIn()){response.sendRedirect("/login?redirectUrl=" + getRedirectUrl(request));return null;}return invocation.invoke();}String getMobileRedirectUrl(String userId, HttpServletRequest request){UserSessionInfo userInfo = (UserSessionInfo) request.getAttribute(UserInterceptor.USER_INFO_COOKIE_NAME);String next = "cart";log.info("next " + next);String serverName = request.getServerName().replaceFirst("www", "m");try {String authUrl = "http://localhost:8080/mobileapi/login!authorizeProfitMandiUser?userId=" +String.valueOf(userInfo.getUserId()) + "&source=Saholic";String urlResponse = Utils.fetchUrl(authUrl);JSONObject responseToken = new JSONObject(urlResponse);String token = responseToken.getString("tokenString");log.info("token " +token);Map<String, Object> mapData = new HashMap<String, Object>();mapData.put("next", next);mapData.put("Id", userId);mapData.put("cartId", userInfo.getCartId());mapData.put("email", userInfo.getEmail());mapData.put("isPrivateDealUser", userInfo.isPrivateDealUser());String data = Base64.encodeBase64String(Pherialize.serialize(mapData).getBytes());String url = "http://" + serverName + "/autologin/?data=" + data + "&token=" + token + "&v=2";log.info("url " + url);return url;} catch (Exception e) {log.info("Could not parse", e);log.info(next);return "http://" + serverName + "/" + next;}}public String getRedirectUrl(HttpServletRequest request) {String queryString = request.getQueryString();if (queryString == null) {queryString = "";} else {queryString = "?" + queryString;}log.info("Redirect Url : " + request.getRequestURI() + queryString);return request.getRequestURI() + queryString;}}