Browse Source

Display last login time

feature/jQueryMainPage
LO Kam Tao Leo 4 years ago
parent
commit
78fd50b2d9
  1. 9
      WebContent/index.jsp
  2. 1
      src/org/leolo/web/dm/Constant.java
  3. 3
      src/org/leolo/web/dm/dao/UserDao.java
  4. 11
      src/org/leolo/web/dm/servlet/LoginServlet.java
  5. 2
      src/org/leolo/web/dm/servlet/UserInfoServlet.java
  6. 12
      src/org/leolo/web/dm/util/CommonUtil.java
  7. 1
      src/org/leolo/web/dm/util/QueuedJobs.java

9
WebContent/index.jsp

@ -10,7 +10,7 @@
<script> <script>
function updateUserInfo(){ function updateUserInfo(){
$.get( '<%=request.getContextPath()%>/UserInfo' , function(data){ $.get( '<%=request.getContextPath()%>/UserInfo' , function(data){
$('#sysname').html(data.system-name); $('#sysname').text(data.system_name);
if(data.identified){ if(data.identified){
//Handle userinfo box and logout link //Handle userinfo box and logout link
$("#hdr-action").text("Welcome back, "+data.username); $("#hdr-action").text("Welcome back, "+data.username);
@ -33,6 +33,7 @@
Download Manager - <span id="sysname"></span> Download Manager - <span id="sysname"></span>
<span class="status" id="hdr-action">Login</span> <span class="status" id="hdr-action">Login</span>
<div class="hidden hdr-info-box ui-corner-all" id="hdr-uinfo"> <div class="hidden hdr-info-box ui-corner-all" id="hdr-uinfo">
<p class="hidden" id="hdr-uinfo-pllit">Last login time : <span id="hdr-uinfo-llit"></span></p>
<button id="hdr-uinfo-logout">Logout</button> <button id="hdr-uinfo-logout">Logout</button>
</div> </div>
<div class="hidden hdr-info-box ui-corner-all" id="hdr-login"> <div class="hidden hdr-info-box ui-corner-all" id="hdr-login">
@ -85,6 +86,12 @@
$("#hdr-login").hide(); $("#hdr-login").hide();
$("#hdr-login-username").val(""); $("#hdr-login-username").val("");
$("#hdr-login-password").val(""); $("#hdr-login-password").val("");
if(data.lastLogin==null){
$("#hdr-uinfo-pllit").hide();
}else{
$("#hdr-uinfo-pllit").show();
$("#hdr-uinfo-llit").text(data.lastLogin);
}
} }
}) })
}); });

1
src/org/leolo/web/dm/Constant.java

@ -10,6 +10,7 @@ public class Constant {
public static final String BUI_KEY_USER_NAME = "uname"; public static final String BUI_KEY_USER_NAME = "uname";
public static final String BUI_KEY_PASSWORD = "passwd"; public static final String BUI_KEY_PASSWORD = "passwd";
public static final String BUI_KEY_FAIL_CNT = "fail_cnt"; public static final String BUI_KEY_FAIL_CNT = "fail_cnt";
public static final String BUI_KEY_LAST_LOGIN = "llit";
//System parameter map //System parameter map
public static final String SP_DATA_DIR = "data_dir"; public static final String SP_DATA_DIR = "data_dir";

3
src/org/leolo/web/dm/dao/UserDao.java

@ -21,7 +21,7 @@ public class UserDao extends BaseDao {
try (Connection conn = getConnection()) { try (Connection conn = getConnection()) {
// Step 1: get basic user info // Step 1: get basic user info
try (PreparedStatement pstmt = conn try (PreparedStatement pstmt = conn
.prepareStatement("SELECT user_id, user_name, password, pwd_err_cnt FROM user WHERE user_name = ?")) { .prepareStatement("SELECT user_id, user_name, password, pwd_err_cnt, last_login FROM user WHERE user_name = ?")) {
pstmt.setString(1, username); pstmt.setString(1, username);
try (ResultSet rs = pstmt.executeQuery()) { try (ResultSet rs = pstmt.executeQuery()) {
if (rs.next()) { if (rs.next()) {
@ -29,6 +29,7 @@ public class UserDao extends BaseDao {
u.put(Constant.BUI_KEY_USER_ID, rs.getInt(1)); u.put(Constant.BUI_KEY_USER_ID, rs.getInt(1));
u.put(Constant.BUI_KEY_PASSWORD, rs.getString(3)); u.put(Constant.BUI_KEY_PASSWORD, rs.getString(3));
u.put(Constant.BUI_KEY_FAIL_CNT, rs.getInt(4)); u.put(Constant.BUI_KEY_FAIL_CNT, rs.getInt(4));
u.put(Constant.BUI_KEY_LAST_LOGIN, rs.getTimestamp(5));
} else { } else {
return null; return null;
} }

11
src/org/leolo/web/dm/servlet/LoginServlet.java

@ -1,6 +1,7 @@
package org.leolo.web.dm.servlet; package org.leolo.web.dm.servlet;
import java.io.IOException; import java.io.IOException;
import java.util.Date;
import java.util.Map; import java.util.Map;
import javax.servlet.ServletException; import javax.servlet.ServletException;
@ -13,6 +14,7 @@ import org.json.JSONObject;
import org.leolo.web.dm.Constant; import org.leolo.web.dm.Constant;
import org.leolo.web.dm.dao.SystemParameterDao; import org.leolo.web.dm.dao.SystemParameterDao;
import org.leolo.web.dm.dao.UserDao; import org.leolo.web.dm.dao.UserDao;
import org.leolo.web.dm.util.CommonUtil;
import org.leolo.web.dm.util.QueuedJobs; import org.leolo.web.dm.util.QueuedJobs;
import org.leolo.web.dm.util.ServletUtil; import org.leolo.web.dm.util.ServletUtil;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -53,7 +55,7 @@ public class LoginServlet extends HttpServlet {
log.info(mark, "User {}@{} logged in successfully!", bui.get(Constant.BUI_KEY_USER_NAME), ServletUtil.getClientIpAddr(request)); log.info(mark, "User {}@{} logged in successfully!", bui.get(Constant.BUI_KEY_USER_NAME), ServletUtil.getClientIpAddr(request));
request.getSession().setAttribute(Constant.SESSION_USER_ID, (int)bui.get(Constant.BUI_KEY_USER_ID)); request.getSession().setAttribute(Constant.SESSION_USER_ID, (int)bui.get(Constant.BUI_KEY_USER_ID));
request.getSession().setAttribute(Constant.SESSION_USER_NAME, bui.get(Constant.BUI_KEY_USER_NAME)); request.getSession().setAttribute(Constant.SESSION_USER_NAME, bui.get(Constant.BUI_KEY_USER_NAME));
sendSuccessResponse(response); sendSuccessResponse(response, bui);
QueuedJobs.getInstance().queue(()->{ QueuedJobs.getInstance().queue(()->{
udao.updateLastLogin((int)bui.get(Constant.BUI_KEY_USER_ID)); udao.updateLastLogin((int)bui.get(Constant.BUI_KEY_USER_ID));
}); });
@ -86,9 +88,14 @@ public class LoginServlet extends HttpServlet {
obj.write(response.getWriter()); obj.write(response.getWriter());
} }
private void sendSuccessResponse(HttpServletResponse response) throws IOException{ private void sendSuccessResponse(HttpServletResponse response, Map<String, Object> bui) throws IOException{
response.setContentType("application/json"); response.setContentType("application/json");
JSONObject obj = new JSONObject(); JSONObject obj = new JSONObject();
if(bui.get(Constant.BUI_KEY_LAST_LOGIN)!=null) {
obj.put("lastLogin", CommonUtil.formatDate((Date)bui.get(Constant.BUI_KEY_LAST_LOGIN)));
}else {
obj.put("lastLogin", (Object)null);
}
obj.put("status", "success"); obj.put("status", "success");
obj.write(response.getWriter()); obj.write(response.getWriter());
} }

2
src/org/leolo/web/dm/servlet/UserInfoServlet.java

@ -41,7 +41,7 @@ public class UserInfoServlet extends BaseServlet {
obj.put("username", this.userName); obj.put("username", this.userName);
obj.put("method", identifiedByKey?"api-key":"session"); obj.put("method", identifiedByKey?"api-key":"session");
} }
obj.put("system-name", new SystemParameterDao().getString(Constant.SP_SYSNAME)); obj.put("system_name", new SystemParameterDao().getString(Constant.SP_SYSNAME));
obj.put("api-version", Constant.SI_API_VERSION); obj.put("api-version", Constant.SI_API_VERSION);
obj.write(response.getWriter()); obj.write(response.getWriter());
} }

12
src/org/leolo/web/dm/util/CommonUtil.java

@ -0,0 +1,12 @@
package org.leolo.web.dm.util;
import java.text.SimpleDateFormat;
import java.util.Date;
public class CommonUtil {
public static String formatDate(Date date) {
return new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(date);
}
}

1
src/org/leolo/web/dm/util/QueuedJobs.java

@ -2,7 +2,6 @@ package org.leolo.web.dm.util;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
import org.leolo.web.dm.Constant; import org.leolo.web.dm.Constant;
import org.leolo.web.dm.dao.SystemParameterDao; import org.leolo.web.dm.dao.SystemParameterDao;

Loading…
Cancel
Save