sunyize 2 gadi atpakaļ
vecāks
revīzija
3779112c00

+ 2 - 0
tnc-base/tnc-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java

@@ -76,6 +76,8 @@ public class ShiroConfig {
         filterChainDefinitionMap.put("/sys/randomImage/**", "anon"); //登录验证码接口排除
         filterChainDefinitionMap.put("/sys/checkCaptcha", "anon"); //登录验证码接口排除
         filterChainDefinitionMap.put("/sys/login", "anon"); //登录接口排除
+        filterChainDefinitionMap.put("/sys/loginFirst", "anon"); //登录前修改密码
+        filterChainDefinitionMap.put("/sys/updatePassword", "anon"); //登录前修改密码
         filterChainDefinitionMap.put("/sys/mLogin", "anon"); //登录接口排除
         filterChainDefinitionMap.put("/sys/logout", "anon"); //登出接口排除
         filterChainDefinitionMap.put("/sys/thirdLogin/**", "anon"); //第三方登录

+ 24 - 11
tnc-system/src/main/java/org/jeecg/modules/system/controller/LoginController.java

@@ -87,7 +87,7 @@ public class LoginController {
 			return result;
 		}
 		//update-end-author:taoyan date:20190828 for:校验验证码
-		
+
 		//1. 校验用户是否有效
 		//update-begin-author:wangshuai date:20200601 for: 登录代码验证用户是否注销bug,if条件永远为false
 		LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
@@ -106,6 +106,15 @@ public class LoginController {
 			result.error500("用户名或密码错误");
 			return result;
 		}
+		SysUser user =new SysUser();
+		user.setUsername(username);
+		user.setPassword(password);
+		Result<?> result1 = getResult(user);
+		if (!result1.isSuccess()){
+			result.error500(result1.getMessage());
+			return result;
+		}
+
 		//用户登录信息
 		userInfo(sysUser, result);
 		//update-begin--Author:liusq  Date:20210126  for:登录成功,删除redis中的验证码
@@ -127,17 +136,17 @@ public class LoginController {
 		String oldpassword = map.get("oldpassword");
 		String password = map.get("password");
 		String confirmpassword = map.get("confirmpassword");
-		LoginUser sysUser = (LoginUser)SecurityUtils.getSubject().getPrincipal();
-		if(!sysUser.getUsername().equals(username)){
-			return Result.error("只允许修改自己的密码!");
-		}
+//		LoginUser sysUser = (LoginUser)SecurityUtils.getSubject().getPrincipal();
+//		if(!sysUser.getUsername().equals(username)){
+//			return Result.error("只允许修改自己的密码!");
+//		}
 		SysUser user = this.sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, username));
 		if(user==null) {
 			return Result.error("用户不存在!");
 		}
 		//update-begin---author:wangshuai ---date:20220316  for:[VUEN-234]修改密码添加敏感日志------------
 		LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-		baseCommonService.addLog("修改密码,username: " +loginUser.getUsername() ,CommonConstant.LOG_TYPE_2, 2);
+		baseCommonService.addLog("修改密码,username: " +username,CommonConstant.LOG_TYPE_2, 2);
 		//update-end---author:wangshuai ---date:20220316  for:[VUEN-234]修改密码添加敏感日志------------
 		Result<?> result = sysUserService.resetPassword(username, oldpassword, password, confirmpassword);
 		//退出登录
@@ -172,15 +181,15 @@ public class LoginController {
 			return Result.error("Token无效!");
 		}
 	}
-	@RequestMapping(value = "/loginFirst", method = RequestMethod.POST)
-	public Result<?> login(@RequestBody SysUser user){
+
+	private Result<?> getResult(SysUser user){
 		LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
 		queryWrapper.eq(SysUser::getUsername,user.getUsername());
 		SysUser sysUser = sysUserService.getOne(queryWrapper);
 		String encryptNew = PasswordUtil.encrypt(user.getUsername(), user.getPassword(), sysUser.getSalt());
 		String encryptOld = PasswordUtil.encrypt(user.getUsername(), "tncBeiqu.123", sysUser.getSalt());
-		if (encryptNew.equals(encryptOld) ){
-			return Result.error("首次登录 请先修改密码...");
+		if (encryptNew.equals(encryptOld)|| sysUser.getUpdateTime()==null){
+			return Result.error("首次登录请先修改密码...");
 		}else {
 			if (sysUser.getUpdateTime()!=null){
 				// 计算毫秒数差值
@@ -188,13 +197,17 @@ public class LoginController {
 				// 将毫秒数转换为天数
 				long diffInDays = diffInMilliseconds / (24 * 60 * 60 * 1000);
 				if (diffInDays>30 ){
-					return Result.error("密码过期 请先修改密码...");
+					return Result.error("密码过期请先修改密码...");
 				}
 			}
 		}
 
 		return Result.ok();
 	}
+	@RequestMapping(value = "/loginFirst", method = RequestMethod.POST)
+	public Result<?> login(@RequestBody SysUser user){
+		return getResult(user);
+	}
 
 	/**
 	 * 【vue3专用】获取用户信息