Subversion Repositories SmartDukaan

Rev

Rev 1614 | Rev 2948 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1614 rajveer 1
package in.shop2020.serving.interceptors;
2907 rajveer 2
import java.util.HashMap;
3
import java.util.Map;
4
 
1614 rajveer 5
import in.shop2020.serving.services.UserSessionInfo;
6
 
2907 rajveer 7
import javax.servlet.http.Cookie;
1614 rajveer 8
import javax.servlet.http.HttpServletRequest;
2907 rajveer 9
import javax.servlet.http.HttpServletResponse;
1614 rajveer 10
import javax.servlet.http.HttpSession;
11
 
12
import org.apache.log4j.Logger;
13
import org.apache.struts2.ServletActionContext;
14
 
15
import com.opensymphony.xwork2.ActionInvocation;
16
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
17
 
18
public class CreateUserInterceptor extends AbstractInterceptor {
19
 
20
 
21
	private static final long serialVersionUID = -4125815700236506235L;
22
	private static Logger log = Logger.getLogger(CreateUserInterceptor.class);
2907 rajveer 23
	private Map<String, Cookie> cookiesMap = null;
24
	private Cookie userCookie = null;
25
	private String cookieDomain = "";
1614 rajveer 26
 
2907 rajveer 27
	public void setCookieDomain(String cookieDomain) {
28
		this.cookieDomain = cookieDomain;
29
	}
1614 rajveer 30
 
31
	@Override
32
	public String intercept(ActionInvocation invocation) throws Exception {
33
		log.info("inside create user interceprot");
34
		HttpServletRequest request = ServletActionContext.getRequest();
35
        HttpSession session = request.getSession(); // Get the existing session or create a new one
2907 rajveer 36
 
37
        createCookiesMap(request);
1614 rajveer 38
 
2907 rajveer 39
        UserSessionInfo userInfo = null;
40
		Cookie userinfoCookie = cookiesMap.get(UserInterceptor.USER_INFO_COOKIE_NAME);
41
		if(userinfoCookie!=null){
42
			userInfo = UserSessionInfo.getUserSessionInfoFromCookieValue(userinfoCookie.getValue());
43
		}else{
1614 rajveer 44
        	userInfo = new UserSessionInfo(session.getId());
2907 rajveer 45
        	request.setAttribute(UserInterceptor.USER_INFO_COOKIE_NAME, userInfo);
46
        	createUserCookie(userInfo.getUserId(), true);
1614 rajveer 47
        }
2907 rajveer 48
        return invocation.invoke();
1614 rajveer 49
	}
50
 
51
 
2907 rajveer 52
	private void createUserCookie(long userId, boolean force) {
53
		userCookie = (Cookie) cookiesMap.get(UserInterceptor.USER_ID_COOKIE_NAME);
54
		String encryptedUserId = UserInterceptor.desEncrypter.encrypt(userId + "");
55
		if(force || userCookie == null || !(encryptedUserId + "").equals(userCookie.getValue())){
56
			userCookie = new Cookie(UserInterceptor.USER_ID_COOKIE_NAME, encryptedUserId);
57
			userCookie.setMaxAge(UserInterceptor.SECONDS_IN_YEAR); // one year
58
			userCookie.setPath("/");
59
			if(!cookieDomain.isEmpty()) {
60
				userCookie.setDomain(cookieDomain);
61
			}
62
			log.info("Created new cookie.");
63
			cookiesMap.put(UserInterceptor.USER_ID_COOKIE_NAME, userCookie);
64
	        HttpServletResponse response = ServletActionContext.getResponse();
65
	        response.addCookie(userCookie);
66
		}
67
	}
68
 
69
	private void createCookiesMap(HttpServletRequest request) {
70
		cookiesMap  = new HashMap<String, Cookie>();
71
		Cookie[] cookies = request.getCookies();
72
		if(cookies==null)
73
			return;
74
		for (Cookie cookie : cookies) {
75
		    cookiesMap.put(cookie.getName(), cookie);
76
		}
77
	}
78
 
1614 rajveer 79
}