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>
function updateUserInfo(){
$.get( '<%=request.getContextPath()%>/UserInfo' , function(data){
$('#sysname').html(data.system-name);
$('#sysname').text(data.system_name);
if(data.identified){
//Handle userinfo box and logout link
$("#hdr-action").text("Welcome back, "+data.username);
@ -33,6 +33,7 @@
Download Manager - <span id="sysname"></span>
<span class="status" id="hdr-action">Login</span>
<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>
</div>
<div class="hidden hdr-info-box ui-corner-all" id="hdr-login">
@ -85,6 +86,12 @@
$("#hdr-login").hide();
$("#hdr-login-username").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_PASSWORD = "passwd";
public static final String BUI_KEY_FAIL_CNT = "fail_cnt";
public static final String BUI_KEY_LAST_LOGIN = "llit";
//System parameter map
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()) {
// Step 1: get basic user info
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);
try (ResultSet rs = pstmt.executeQuery()) {
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_PASSWORD, rs.getString(3));
u.put(Constant.BUI_KEY_FAIL_CNT, rs.getInt(4));
u.put(Constant.BUI_KEY_LAST_LOGIN, rs.getTimestamp(5));
} else {
return null;
}

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

@ -1,6 +1,7 @@
package org.leolo.web.dm.servlet;
import java.io.IOException;
import java.util.Date;
import java.util.Map;
import javax.servlet.ServletException;
@ -13,6 +14,7 @@ import org.json.JSONObject;
import org.leolo.web.dm.Constant;
import org.leolo.web.dm.dao.SystemParameterDao;
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.ServletUtil;
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));
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));
sendSuccessResponse(response);
sendSuccessResponse(response, bui);
QueuedJobs.getInstance().queue(()->{
udao.updateLastLogin((int)bui.get(Constant.BUI_KEY_USER_ID));
});
@ -86,9 +88,14 @@ public class LoginServlet extends HttpServlet {
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");
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.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("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.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.Executors;
import java.util.concurrent.ThreadFactory;
import org.leolo.web.dm.Constant;
import org.leolo.web.dm.dao.SystemParameterDao;

Loading…
Cancel
Save