|
@@ -5,6 +5,7 @@ import java.util.Date;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -14,13 +15,18 @@ import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
|
|
|
|
|
|
import cn.com.qmth.stmms.admin.utils.SessionExamUtils;
|
|
|
import cn.com.qmth.stmms.biz.exam.model.Exam;
|
|
|
+import cn.com.qmth.stmms.biz.exam.model.Marker;
|
|
|
import cn.com.qmth.stmms.biz.exam.model.OperationLog;
|
|
|
import cn.com.qmth.stmms.biz.exam.service.ExamService;
|
|
|
import cn.com.qmth.stmms.biz.exam.service.MarkerService;
|
|
|
import cn.com.qmth.stmms.biz.exam.service.OperationLogService;
|
|
|
+import cn.com.qmth.stmms.biz.user.model.User;
|
|
|
import cn.com.qmth.stmms.biz.user.service.UserService;
|
|
|
import cn.com.qmth.stmms.common.annotation.Logging;
|
|
|
import cn.com.qmth.stmms.common.domain.WebUser;
|
|
|
+import cn.com.qmth.stmms.common.enums.Role;
|
|
|
+import cn.com.qmth.stmms.common.session.model.StmmsSession;
|
|
|
+import cn.com.qmth.stmms.common.utils.AccessControlUtils;
|
|
|
import cn.com.qmth.stmms.common.utils.RequestUtils;
|
|
|
|
|
|
/**
|
|
@@ -44,13 +50,13 @@ public class LogInterceptor extends HandlerInterceptorAdapter {
|
|
|
private UserService userService;
|
|
|
|
|
|
@Override
|
|
|
- public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
|
|
|
- ModelAndView modelAndView) {
|
|
|
+ public void postHandle(HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Object handler,
|
|
|
+ ModelAndView modelAndView) throws java.lang.Exception {
|
|
|
WebUser wu = RequestUtils.getWebUser(request);
|
|
|
- String uri = request.getRequestURI();
|
|
|
HandlerMethod method = (HandlerMethod) handler;
|
|
|
+ String uri = request.getRequestURI();
|
|
|
if (uri.startsWith("/login")) {
|
|
|
- // wu = buildWebUser(request, response);
|
|
|
+ wu = buildWebUser(request);
|
|
|
}
|
|
|
Logging logging = method.getMethodAnnotation(Logging.class);
|
|
|
if (wu != null && logging != null) {
|
|
@@ -59,11 +65,8 @@ public class LogInterceptor extends HandlerInterceptorAdapter {
|
|
|
}
|
|
|
|
|
|
private void saveLog(Logging logging, WebUser wu, HttpServletRequest request, HttpServletResponse response) {
|
|
|
- int examId = SessionExamUtils.getExamId(request);
|
|
|
-
|
|
|
OperationLog log = new OperationLog();
|
|
|
log.setCreateTime(new Date());
|
|
|
- log.setExamId(examId > 0 ? null : examId);
|
|
|
log.setMenu(logging.menu());
|
|
|
log.setType(logging.type());
|
|
|
log.setMarker(wu.isMarker());
|
|
@@ -72,6 +75,7 @@ public class LogInterceptor extends HandlerInterceptorAdapter {
|
|
|
log.setOperatorId(wu.getMarker().getId());
|
|
|
log.setIpAddress(wu.getMarker().getLastLoginIp());
|
|
|
log.setLoginName(wu.getMarker().getLoginName());
|
|
|
+ log.setExamId(wu.getMarker().getExamId());
|
|
|
Exam exam = examService.findById(wu.getMarker().getExamId());
|
|
|
log.setSchoolId(exam.getSchoolId());
|
|
|
} else {
|
|
@@ -79,6 +83,8 @@ public class LogInterceptor extends HandlerInterceptorAdapter {
|
|
|
log.setOperatorId(wu.getUser().getId());
|
|
|
log.setIpAddress(wu.getUser().getLastLoginIp());
|
|
|
log.setLoginName(wu.getUser().getLoginName());
|
|
|
+ int examId = SessionExamUtils.getExamId(request);
|
|
|
+ log.setExamId(examId > 0 ? null : examId);
|
|
|
log.setSchoolId(wu.getUser().getSchoolId());
|
|
|
}
|
|
|
log.setDescription(RequestUtils.getLog(request));
|
|
@@ -92,17 +98,31 @@ public class LogInterceptor extends HandlerInterceptorAdapter {
|
|
|
* @param response
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
- // private WebUser buildWebUser(HttpServletRequest request,
|
|
|
- // HttpServletResponse response) {
|
|
|
- // WebUser wu = WebUser.buildFromSession(RequestUtils.getSession(request));
|
|
|
- // if (wu != null) {
|
|
|
- // RequestUtils.setWebUser(request, wu);
|
|
|
- // if (wu.isMarker()) {
|
|
|
- // wu.setDataObject(markerService.findById(wu.getId()));
|
|
|
- // } else {
|
|
|
- // wu.setDataObject(userService.findById(wu.getId()));
|
|
|
- // }
|
|
|
- // }
|
|
|
- // return wu;
|
|
|
- // }
|
|
|
+ private WebUser buildWebUser(HttpServletRequest request) {
|
|
|
+ StmmsSession session = RequestUtils.getSession(request);
|
|
|
+ Integer userId = session.getWebUserId();
|
|
|
+ Role role = session.getWebUserRole();
|
|
|
+ if (userId != null && role != null) {
|
|
|
+ if (Role.MARKER == role) {
|
|
|
+ Marker marker = markerService.findById(userId);
|
|
|
+ if (marker != null && marker.getAccessTokenRefreshTime() != null
|
|
|
+ && StringUtils.equals(session.getWebUserToken(), marker.getAccessToken())
|
|
|
+ && !AccessControlUtils.expired(marker.getAccessTokenRefreshTime())) {
|
|
|
+ WebUser wu = new WebUser(marker, session.getWebUserLogoutUrl());
|
|
|
+ RequestUtils.setWebUser(request, wu);
|
|
|
+ return wu;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ User user = userService.findById(userId);
|
|
|
+ if (user != null && user.getRole() == role && user.getAccessTokenRefreshTime() != null
|
|
|
+ && StringUtils.equals(session.getWebUserToken(), user.getAccessToken())
|
|
|
+ && !AccessControlUtils.expired(user.getAccessTokenRefreshTime())) {
|
|
|
+ WebUser wu = new WebUser(user);
|
|
|
+ RequestUtils.setWebUser(request, wu);
|
|
|
+ return wu;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
}
|