feat: 禁止密码过期用户访问业务接口

This commit is contained in:
2024-06-15 22:44:32 +08:00
8 changed files with 118 additions and 26 deletions

View File

@@ -99,10 +99,24 @@ public class LoginUser implements Serializable {
*/
private LocalDateTime loginTime;
public LoginUser(Set<String> permissions, Set<String> roleCodes, Set<RoleDTO> roles) {
/**
* 最后一次修改密码时间
*/
private LocalDateTime pwdResetTime;
/**
* 登录时系统设置的密码过期天数
*/
private Integer passwordExpirationDays;
public LoginUser(Set<String> permissions,
Set<String> roleCodes,
Set<RoleDTO> roles,
Integer passwordExpirationDays) {
this.permissions = permissions;
this.roleCodes = roleCodes;
this.roles = roles;
this.passwordExpirationDays = passwordExpirationDays;
}
/**
@@ -116,4 +130,21 @@ public class LoginUser implements Serializable {
}
return roleCodes.contains(SysConstants.ADMIN_ROLE_CODE);
}
/**
* 密码是否已过期
*
* @return 是否过期
*/
public boolean isPasswordExpired() {
// 永久有效
if (this.passwordExpirationDays == null || this.passwordExpirationDays <= SysConstants.NO) {
return false;
}
// 初始密码(第三方登录用户)暂不提示修改
if (this.pwdResetTime == null) {
return false;
}
return this.pwdResetTime.plusDays(this.passwordExpirationDays).isBefore(LocalDateTime.now());
}
}