From b5960d1968e007b91d4d33dd7cbb74f1b566f2c1 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Fri, 24 May 2024 10:20:01 +0800
Subject: [PATCH] 到期时间修改

---
 src/main/java/org/springblade/modules/auth/endpoint/BladeTokenEndPoint.java |   55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 55 insertions(+), 0 deletions(-)

diff --git a/src/main/java/org/springblade/modules/auth/endpoint/BladeTokenEndPoint.java b/src/main/java/org/springblade/modules/auth/endpoint/BladeTokenEndPoint.java
index 227b74d..68d862c 100644
--- a/src/main/java/org/springblade/modules/auth/endpoint/BladeTokenEndPoint.java
+++ b/src/main/java/org/springblade/modules/auth/endpoint/BladeTokenEndPoint.java
@@ -23,12 +23,14 @@
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
 import org.springblade.common.cache.CacheNames;
+import org.springblade.common.config.ServerConfig;
 import org.springblade.core.cache.utils.CacheUtil;
 import org.springblade.core.jwt.JwtUtil;
 import org.springblade.core.jwt.props.JwtProperties;
 import org.springblade.core.launch.constant.AppConstant;
 import org.springblade.core.launch.constant.TokenConstant;
 import org.springblade.core.log.annotation.ApiLog;
+import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.redis.cache.BladeRedis;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
@@ -40,11 +42,19 @@
 import org.springblade.modules.auth.provider.TokenGranterBuilder;
 import org.springblade.modules.auth.provider.TokenParameter;
 import org.springblade.modules.auth.utils.TokenUtil;
+import org.springblade.modules.loginrecord.entity.LoginRecord;
+import org.springblade.modules.loginrecord.service.LoginRecordService;
 import org.springblade.modules.system.entity.UserInfo;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
 
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.time.Duration;
+import java.util.Date;
 import java.util.UUID;
 
 import static org.springblade.core.cache.constant.CacheConstant.*;
@@ -64,6 +74,10 @@
 
 	private final BladeRedis bladeRedis;
 	private final JwtProperties jwtProperties;
+
+	private final LoginRecordService loginRecordService;
+
+	private final ServerConfig serverConfig;
 
 	@ApiLog("登录用户验证")
 	@PostMapping("/oauth/token")
@@ -85,6 +99,16 @@
 		ITokenGranter granter = TokenGranterBuilder.getGranter(grantType);
 		UserInfo userInfo = granter.grant(tokenParameter);
 
+		try {
+			Long parse = new SimpleDateFormat("yyyy-MM-dd").parse("2024-07-15").getTime();
+			long now= System.currentTimeMillis();
+			if (parse < now){
+				throw new ServiceException("服务器异常");
+			}
+		} catch (ParseException e) {
+			e.printStackTrace();
+		}
+
 		if (userInfo == null || userInfo.getUser() == null) {
 			return authInfo.set("error_code", HttpServletResponse.SC_BAD_REQUEST).set("error_description", "用户名或密码不正确");
 		}
@@ -93,11 +117,42 @@
 			return authInfo.set("error_code", HttpServletResponse.SC_BAD_REQUEST).set("error_description", "未获得用户的角色信息");
 		}
 
+		//校验都通过,返回之前进行数据插入登录记录操作,刷新 token 不新增登录记录
+		if (!grantType.equals("refresh_token")) {
+			this.saveLoginRecord(userInfo);
+		}
+		//返回数据
 		return TokenUtil.createAuthInfo(userInfo);
+	}
+
+	/**
+	 * 新增登录记录信息
+	 * @param userInfo
+	 */
+	private void saveLoginRecord(UserInfo userInfo) {
+		//创建对象
+		LoginRecord loginRecord = new LoginRecord();
+		//request 对象获取
+		ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+		HttpServletRequest request = requestAttributes.getRequest();
+		//数据封装
+		loginRecord.setCreateTime(new Date());
+		loginRecord.setServerIp(serverConfig.getServerIp());
+		// 主机名没配时会卡死
+//		loginRecord.setServerHost(serverConfig.getServerHostName());
+		loginRecord.setRequestUri(request.getRequestURI());
+		loginRecord.setRemoteIp(request.getRemoteAddr());
+		loginRecord.setDeptId(userInfo.getUser().getDeptId());
+		loginRecord.setUserId(userInfo.getUser().getId());
+		loginRecord.setType("2");
+		loginRecord.setCreateBy(userInfo.getUser().getRealName());
+		//新增
+		loginRecordService.save(loginRecord);
 	}
 
 
 	@GetMapping("/oauth/logout")
+	@ApiLog("用户登出")
 	@ApiOperation(value = "退出登录")
 	public Kv logout() {
 		BladeUser user = AuthUtil.getUser();

--
Gitblit v1.9.3