private void logout(ReqCtx ctx, HttpServletResponse response, HttpSession session) throws IOException { String cookieId = ctx.getArgVal(JSESSIONID_tag); String user = ctx.getUserId(); if (cookieId != null) { session.invalidate(); SessionCounterListener.removeSession(cookieId); successResponse(ctx, response, "Logged Out " + user); log(INFO, "Logged out the user " + user); } else { errorResponse(ctx, response, "Invalid Session"); log(WARNING, "Invalid session while logging out"); } }
/** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { boolean authenticated = true; ReqCtx ctx = getRequestContext(request); if (!ctx.isActivity()) { response.sendError(HttpServletResponse.SC_EXPECTATION_FAILED, "Only Activities supported"); log(Level.WARNING, "Only Activities supported"); return; } if (ctx.hasFile()) { // will handle this later } HttpSession session = request.getSession(true); log(Level.INFO, "Incoming session "); log.info("Incoming session"); checkDB(); if (!ctx.getOpName().equalsIgnoreCase("Login") && !ctx.getOpName().equalsIgnoreCase("Logout")) { String sessionId = ctx.getArgVal(JSESSIONID_tag); log(Level.INFO, "Cookie Id in the request:" + sessionId); if (sessionId == null || sessionId.length() == 0) authenticated = false; else { HttpSession sess = SessionCounterListener.getSession(sessionId); if (sess == null) authenticated = false; else { String user = (String) sess.getAttribute(userId_tag); String pass = (String) sess.getAttribute(Password_tag); o.println(user + " " + pass); authenticated = validate(user, pass, session); if (authenticated) log(Level.INFO, "Authenticated User " + user); } } } if (!authenticated) { errorResponse( ctx, response, "NoSession.Authentication failed!!", HttpServletResponse.SC_UNAUTHORIZED); log(Level.WARNING, "No Session.Authentication failed!!"); return; } try { if (ctx.getOpName().equalsIgnoreCase("Login")) { // Login Logout AddUser DeleteUser login(ctx, response, session); return; } else if (ctx.getOpName().equalsIgnoreCase("Logout")) { logout(ctx, response, session); return; } if (session .getAttribute(isOperator_tag) .equals("true")) { // following operations only for Operator if (ctx.getOpName().equalsIgnoreCase("AddUser")) { addUser(ctx, response); } else if (ctx.getOpName().equalsIgnoreCase("ListUser")) { listUser(ctx, response); } else if (ctx.getOpName().equalsIgnoreCase("EditUser")) { editUser(ctx, response); } else if (ctx.getOpName().equalsIgnoreCase("DeleteUser")) { disableUser(ctx, response); } else if (ctx.getOpName().equalsIgnoreCase("ChangeCredits") || ctx.getOpName().equalsIgnoreCase("RechargeUser")) { changeCredits(ctx, response); } else if (ctx.getOpName().equalsIgnoreCase("GetTransactions")) { listTransactions(ctx, response); } else if (ctx.getOpName().equalsIgnoreCase("UpdateUserAddress")) { updateAddress(ctx, response); } else if (ctx.getOpName() .equalsIgnoreCase("UpdateUserDetails")) { // UpdateUserDetails UpdateDevice updateDetails(ctx, response); } else if (ctx.getOpName().equalsIgnoreCase("UpdateDevice")) { updateDevice(ctx, response); } return; } if (ctx.getOpName().equalsIgnoreCase("LookupUser")) { // LookupUser GetUserApps lookupUser(ctx, response); } else if (ctx.getOpName().equalsIgnoreCase("GetUserApps")) { getUserApps(ctx, response); } else if (ctx.getOpName() .equalsIgnoreCase("GetAppDetails")) { // GetAppDetails UpdateUserAppRole getAppDetails(ctx, response); } else if (ctx.getOpName().equalsIgnoreCase("UpdateUserAppRole")) { updateUserAppRole(ctx, response); } else if (ctx.getOpName() .equalsIgnoreCase("GetBillDetails")) { // GetBillDetails DeliveryUpdate getBillDetails(ctx, response); } else if (ctx.getOpName().equalsIgnoreCase("DeliveryUpdate")) { deliveryUpdate(ctx, response); } else { errorResponse(ctx, response, "Wrong Action Requested"); } if (null != con) { con.close(); con = null; } } catch (Exception ex) { errorResponse(ctx, response, "Internal Error"); getServletContext().log("Failure in doGet try block"); o.println("Exception in doGet of Oprtr: "); ex.printStackTrace(); } finally { try { if (null != con) con.close(); } catch (Exception ex) { } // do nothing con = null; } // Notification - need not be handled SyncDevice }