Subversion Repositories SmartDukaan

Rev

Rev 17539 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
781 vikas 1
package in.shop2020.serving.interceptors;
2
 
3
import in.shop2020.serving.services.UserSessionInfo;
17554 amit.gupta 4
import in.shop2020.serving.utils.Utils;
781 vikas 5
 
17554 amit.gupta 6
import java.util.HashMap;
7
import java.util.Map;
8
 
781 vikas 9
import javax.servlet.http.HttpServletRequest;
924 vikas 10
import javax.servlet.http.HttpServletResponse;
781 vikas 11
 
17539 amit.gupta 12
import org.apache.commons.codec.binary.Base64;
832 rajveer 13
import org.apache.log4j.Logger;
781 vikas 14
import org.apache.struts2.ServletActionContext;
17554 amit.gupta 15
import org.json.JSONObject;
781 vikas 16
 
17
import com.opensymphony.xwork2.ActionInvocation;
18
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
19
 
17554 amit.gupta 20
import de.ailis.pherialize.Pherialize;
21
 
781 vikas 22
public class LoginInterceptor extends AbstractInterceptor {
23
 
24
 
25
	/**
26
	 * 
27
	 */
28
	private static final long serialVersionUID = 1L;
832 rajveer 29
	private static Logger log = Logger.getLogger(Class.class);
816 vikas 30
 
781 vikas 31
	@Override
32
	public String intercept(ActionInvocation invocation) throws Exception {
33
		HttpServletRequest request = ServletActionContext.getRequest();
924 vikas 34
		HttpServletResponse response = ServletActionContext.getResponse();
781 vikas 35
 
2907 rajveer 36
        UserSessionInfo userInfo = (UserSessionInfo) request.getAttribute(UserInterceptor.USER_INFO_COOKIE_NAME);
17539 amit.gupta 37
        if(userInfo.isPrivateDealUser()){
17554 amit.gupta 38
        	response.sendRedirect(getMobileRedirectUrl(String.valueOf(userInfo.getUserId()), request));
39
			return null;
17539 amit.gupta 40
        }
781 vikas 41
        if(userInfo == null || !userInfo.isLoggedIn()){
5638 amit.gupta 42
        	response.sendRedirect("/login?redirectUrl=" + getRedirectUrl(request));
924 vikas 43
        	return null;
44
     	}
781 vikas 45
		return invocation.invoke();
46
	}
47
 
17554 amit.gupta 48
	String getMobileRedirectUrl(String userId, HttpServletRequest request){
49
		UserSessionInfo userInfo = (UserSessionInfo) request.getAttribute(UserInterceptor.USER_INFO_COOKIE_NAME);
50
		String next = "cart";
51
		log.info("next " + next);
52
		String serverName = request.getServerName().replaceFirst("www", "m");
53
    	try {
54
	    	String authUrl = "http://localhost:8080/mobileapi/login!authorizeProfitMandiUser?userId=" + 
55
							String.valueOf(userInfo.getUserId()) + "&source=Saholic";
56
			String urlResponse = Utils.fetchUrl(authUrl);
57
			JSONObject responseToken = new JSONObject(urlResponse);
58
			String token = responseToken.getString("tokenString");
59
			log.info("token " +token);
60
 
61
 
62
			Map<String, Object> mapData = new HashMap<String, Object>();
63
			mapData.put("next", next);
64
			mapData.put("Id", userId);
65
			mapData.put("cartId", userInfo.getCartId());
66
			mapData.put("email", userInfo.getEmail());
67
			mapData.put("isPrivateDealUser", userInfo.isPrivateDealUser());
68
			String data = Base64.encodeBase64String(Pherialize.serialize(mapData).getBytes());
69
 
70
			String url = "http://" + serverName + "/autologin/?data=" + data + "&token=" + token + "&v=2";
71
			log.info("url " + url);
72
			return url;
73
    	} catch (Exception e) {
74
    		log.info("Could not parse", e);
75
    		log.info(next);
76
			return "http://" + serverName + "/" + next;
77
		}
78
	}
17539 amit.gupta 79
 
924 vikas 80
	public String getRedirectUrl(HttpServletRequest request) {
781 vikas 81
		String queryString = request.getQueryString();
82
		if (queryString == null) {
83
			queryString = "";
84
		} else {
85
			queryString = "?" + queryString;
86
		}
87
		log.info("Redirect Url : " + request.getRequestURI() + queryString);
924 vikas 88
		return request.getRequestURI() + queryString;
781 vikas 89
	}
90
}