Rev 419 | Blame | Last modification | View Log | RSS feed
/****/package in.shop2020.serving.controllers;import in.shop2020.model.v1.user.UserContext;import in.shop2020.model.v1.user.UserContextException;import in.shop2020.model.v1.user.UserInternalInfo;import in.shop2020.serving.services.UserSessionInfo;import in.shop2020.serving.utils.Utils;import in.shop2020.thrift.clients.ShoppingCartClient;import in.shop2020.thrift.clients.UserContextServiceClient;import java.util.Map;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.apache.juli.logging.Log;import org.apache.juli.logging.LogFactory;import org.apache.struts2.interceptor.CookiesAware;import org.apache.struts2.interceptor.ServletRequestAware;import org.apache.struts2.interceptor.ServletResponseAware;import org.apache.struts2.interceptor.SessionAware;import org.apache.thrift.TException;/*** Base class for all user action handlers i.e. controllers** @author naveen**/public abstract class BaseController implements CookiesAware, ServletResponseAware, ServletRequestAware {private Map cookiesMap;protected HttpServletResponse response;protected HttpServletRequest request;protected HttpSession session;UserSessionInfo userinfo = null;Cookie tempCookie = null;private static Log log = LogFactory.getLog(BaseController.class);public BaseController() {}public Map getCookiesMap() {return cookiesMap;}@Overridepublic void setCookiesMap(Map cookiesMap) {this.cookiesMap = cookiesMap;}@Overridepublic void setServletResponse(HttpServletResponse response){this.response = response;if(tempCookie != null){this.response.addCookie(tempCookie);}}@Overridepublic void setServletRequest(HttpServletRequest request){this.request = request;this.session = request.getSession();setUserSessionInfo();}public void removeUserSessionInfo(){if(this.session.getAttribute("userinfo") != null ){this.session.removeAttribute("userinfo");}}public void setUserSessionInfo(){if(this.session.getAttribute("userinfo") != null ){userinfo = (UserSessionInfo) this.session.getAttribute("userinfo");}else{processCookiesInfo();//userinfo = new UserSessionInfo();}this.session.setAttribute("userinfo",userinfo);}public void processCookiesInfo(){Cookie[] cookies = this.request.getCookies();boolean foundUserIdCookie = false;boolean foundSessionIdCookie = false;long userId = 0 ;long sessionId = 0;if(cookies != null){for(int loopIndex = 0; loopIndex < cookies.length; loopIndex++) {Cookie cookie1 = cookies[loopIndex];if (cookie1.getName().equals("userid")) {System.out.println("User Id is = " + cookie1.getValue());userId = Long.parseLong(cookie1.getValue());foundUserIdCookie = true;}if (cookie1.getName().equals("sessionid")) {System.out.println("Session Id is = " + cookie1.getValue());sessionId = Long.parseLong(cookie1.getValue());foundSessionIdCookie = true;}}}if(foundUserIdCookie){if(Utils.isUserLoggedIn(userId)){userinfo = new UserSessionInfo(userId, false);}else{if(foundSessionIdCookie){userinfo = new UserSessionInfo(sessionId, true);}else{userinfo = new UserSessionInfo();for(int loopIndex = 0; loopIndex < cookies.length; loopIndex++) {Cookie cookie1 = cookies[loopIndex];if (cookie1.getName().equals("userid")) {cookie1.setMaxAge(0);//cookie1.setPath(cookie1.getPath());//cookie1.setDomain(cookie1.getDomain());tempCookie = cookie1;}}}}}else{if(foundSessionIdCookie){userinfo = new UserSessionInfo(sessionId, true);}else{userinfo = new UserSessionInfo();Cookie cookie1 = new Cookie("sessionid", userinfo.getSessionId()+"");tempCookie = cookie1;}}}public String getEmail(){return userinfo.getEmail();}public String getNameOfUser(){return userinfo.getNameOfUser();}}/*// public String getEmail(){// if(this.session.getAttribute("email") != null){// return this.session.getAttribute("email").toString();// }else{// return "";// }// }public String getEmail(){return userinfo.getEmail();}// public long getNumberOfCartItems(){// if(this.session.getAttribute("totalitems") != null ){// return Long.parseLong(this.session.getAttribute("totalitems").toString());// }else{// return 0;// }// }public int getNumberOfCartItems(){return this.userinfo.getTotalItems();}public void removeSessionOnLogout(){if(this.session.getAttribute("loggedin") != null ){this.session.removeAttribute("loggedin");}if(this.session.getAttribute("userid") != null){this.session.removeAttribute("userid");}if( this.session.getAttribute("issessionid") != null){this.session.removeAttribute("issessionid");}}public void setSessionAndCookies(){*Following steps will be executed on each of the requests* Check Session:* IF user is loggedin* - OK. Nothing to do. Allow access to the resources* ELSE check cookies* IF UserID is set* IF User is logged into backend.* Set user as loogedin in Session.* Set SessionID in session* ELSE* Remove UserID from cookies.* ELSE* IF SessionID is set* OK....set session id in session also* ELSE Create SessionID and Set SessionID in cookies and Session* ELSE IF SessionID is set in session* - OK.**String loggedIn = null;String userId = null;String isSessionId = null;if(this.session.getAttribute("loggedin") != null ){loggedIn = this.session.getAttribute("loggedin").toString();}if(this.session.getAttribute("userid") != null){userId = this.session.getAttribute("userid").toString();}if( this.session.getAttribute("issessionid") != null){isSessionId = this.session.getAttribute("issessionid").toString();}if(loggedIn != null && isSessionId != null && userId != null ){if(loggedIn.equals("true")){if(isSessionId.equals("false")){System.out.println("Logged on user id is :" + userId );}else{// if we reached here something is wrong.System.out.println("Something went wrong... Dude !!!");}}else{if(isSessionId.equals("true")){System.out.println("Session is already set with sessionid :" + userId );}else{// if we reached here something is wrong.System.out.println("Something went wrong... Dude !!!");}}}else if(!getLoginSessionInfoFromCookies()){System.out.println("Cookies are not set. Lookes like new user. Setting all the things.");}// else if(isSessionId != null && userId != null){// System.out.println("Session is already set with sessionid :" + userId );// }}String getEmailId(long userId){UserContextServiceClient userContextServiceClient = null;in.shop2020.model.v1.user.UserContextService.Client userClient = null;String email = "";try {userContextServiceClient = new UserContextServiceClient();userClient = userContextServiceClient.getClient();email = userClient.getPrimaryInfo(userId, false).getEmail();} catch (UserContextException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (TException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return email;}public boolean isUserLoggedIn(long userId){UserContextServiceClient userContextServiceClient = null;in.shop2020.model.v1.user.UserContextService.Client userClient = null;boolean isLoggedIn = false;try {userContextServiceClient = new UserContextServiceClient();userClient = userContextServiceClient.getClient();isLoggedIn = userClient.getState(userId, false).isIsLoggedIn();} catch (UserContextException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (TException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return isLoggedIn;}public long getNewUserSessionId(){// I feel we dont need to create the context right now. need to discuss// UserContextServiceClient userContextServiceClient = null;// in.shop2020.model.v1.user.UserContextService.Client userClient = null;//// userContextServiceClient = new UserContextServiceClient();// userClient = userContextServiceClient.getClient();//// UserContext context = new UserContext();// context.setSessionid(1000);// context = userClient.createContext(context, false);//long sessionId = 12;// sessionId = context.getSessionid();return sessionId;}public boolean getLoginSessionInfoFromCookies(){Cookie[] cookies = this.request.getCookies();boolean foundUserIdCookie = false;boolean foundSessionIdCookie = false;long sessionId = 0;long userId = 0;if(cookies != null){for(int loopIndex = 0; loopIndex < cookies.length; loopIndex++) {Cookie cookie1 = cookies[loopIndex];if (cookie1.getName().equals("userid")) {System.out.println("User Id is = " + cookie1.getValue());userId = Long.parseLong(cookie1.getValue());foundUserIdCookie = true;}if (cookie1.getName().equals("sessionid")) {System.out.println("Session Id is = " + cookie1.getValue());sessionId = Long.parseLong(cookie1.getValue());foundSessionIdCookie = true;}}}if(foundUserIdCookie){if(isUserLoggedIn(userId)){this.session.setAttribute("userid", userId+"");this.session.setAttribute("loggedin", "true");this.session.setAttribute("issessionid", "false");this.session.setAttribute("email", getEmailId(userId));this.session.setAttribute("totalitems", getNumberOfCartItems());}else{/* may be something different can be done as commented* this.session.setAttribute("userid", userId+"");* this.session.setAttribute("loggedin", "false");* this.session.setAttribute("issessionid", "false");*if(!foundSessionIdCookie){sessionId = getNewUserSessionId();}this.session.setAttribute("userid", sessionId+"");this.session.setAttribute("loggedin", "false");this.session.setAttribute("issessionid", "true");for(int loopIndex = 0; loopIndex < cookies.length; loopIndex++) {Cookie cookie1 = cookies[loopIndex];if (cookie1.getName().equals("userid")) {cookie1.setMaxAge(0);//cookie1.setPath(cookie1.getPath());//cookie1.setDomain(cookie1.getDomain());tempCookie = cookie1;}}}}else{if(foundSessionIdCookie){this.session.setAttribute("userid", sessionId+"");this.session.setAttribute("loggedin", "false");this.session.setAttribute("issessionid", "true");this.session.setAttribute("totalitems", "0");}else{sessionId = getNewUserSessionId();this.session.setAttribute("userid", sessionId+"");this.session.setAttribute("loggedin", "false");this.session.setAttribute("issessionid", "true");this.session.setAttribute("totalitems", "0");Cookie cookie1 = new Cookie("sessionid", sessionId+"");tempCookie = cookie1;}}return false;}}}}else if(getCookiesMap() != null){Cookie loginCookie = (Cookie)getCookiesMap().get("USER_ID");log.info("login cookie name is " + loginCookie.getName() );log.info("login cookie value is " + loginCookie.getValue());}if(loginInfo != null && loginInfo.equals("true")){System.out.println("user id is :" + this.session.getAttribute("userid").toString());}this.session.setAttribute("loggedin", "true");this.session.setAttribute("userid", "rajveer");System.out.println("setting user as logged in ");}*/