diff --git a/base/src/main/java/com/tinyengine/it/controller/AppTemplateController.java b/base/src/main/java/com/tinyengine/it/controller/AppTemplateController.java index 5c7b6a63..798ca036 100644 --- a/base/src/main/java/com/tinyengine/it/controller/AppTemplateController.java +++ b/base/src/main/java/com/tinyengine/it/controller/AppTemplateController.java @@ -34,8 +34,6 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import java.util.List; - /** * 应用模版api * diff --git a/base/src/main/java/com/tinyengine/it/controller/TenantController.java b/base/src/main/java/com/tinyengine/it/controller/TenantController.java index 703832f4..3e0bf629 100644 --- a/base/src/main/java/com/tinyengine/it/controller/TenantController.java +++ b/base/src/main/java/com/tinyengine/it/controller/TenantController.java @@ -23,7 +23,6 @@ import org.springframework.web.bind.annotation.RestController; import java.util.List; -import java.util.Map; @Validated @RestController @@ -44,13 +43,13 @@ public class TenantController { @Operation(summary = "获取组织列表", description = "获取组织列表", responses = { @ApiResponse(responseCode = "200", description = "返回信息", content = @Content(mediaType = "application/json", - schema = @Schema(implementation = Tenant.class))), + schema = @Schema(implementation = Tenant.class))), @ApiResponse(responseCode = "400", description = "请求失败") }) @SystemControllerLog(description = "获取组织列表") @GetMapping("/tenant/list") public Result> getAllTenant() { - + return Result.success(tenantService.findAllTenant()); } @@ -61,12 +60,12 @@ public Result> getAllTenant() { * @return tenant */ @Operation(summary = "新建组织", description = "新建组织", - parameters = { - @Parameter(name = "tenant", description = "入参对象") - }, responses = { + parameters = { + @Parameter(name = "tenant", description = "入参对象") + }, responses = { @ApiResponse(responseCode = "200", description = "返回信息", - content = @Content(mediaType = "application/json", - schema = @Schema(implementation = Tenant.class))), + content = @Content(mediaType = "application/json", + schema = @Schema(implementation = Tenant.class))), @ApiResponse(responseCode = "400", description = "请求失败") }) @SystemControllerLog(description = "新建组织") diff --git a/base/src/main/java/com/tinyengine/it/login/config/SSOInterceptor.java b/base/src/main/java/com/tinyengine/it/login/config/SSOInterceptor.java index 330c62cb..28456880 100644 --- a/base/src/main/java/com/tinyengine/it/login/config/SSOInterceptor.java +++ b/base/src/main/java/com/tinyengine/it/login/config/SSOInterceptor.java @@ -12,7 +12,7 @@ package com.tinyengine.it.login.config; -import com.tinyengine.it.login.Utils.JwtUtil; +import com.tinyengine.it.login.utils.JwtUtil; import com.tinyengine.it.login.config.context.DefaultLoginUserContext; import com.tinyengine.it.login.model.UserInfo; import com.tinyengine.it.model.entity.Tenant; diff --git a/base/src/main/java/com/tinyengine/it/login/config/context/DefaultLoginUserContext.java b/base/src/main/java/com/tinyengine/it/login/config/context/DefaultLoginUserContext.java index 0b68f020..ade54dfa 100644 --- a/base/src/main/java/com/tinyengine/it/login/config/context/DefaultLoginUserContext.java +++ b/base/src/main/java/com/tinyengine/it/login/config/context/DefaultLoginUserContext.java @@ -13,25 +13,25 @@ @Component public class DefaultLoginUserContext implements LoginUserContext { - private static final ThreadLocal currentUser = new ThreadLocal<>(); + private static final ThreadLocal CURRENT_USER = new ThreadLocal<>(); private static final int DEFAULT_PLATFORM = 1; @Override public List getTenants() { - UserInfo userInfo = currentUser.get(); + UserInfo userInfo = CURRENT_USER.get(); return userInfo != null ? userInfo.getTenants() : null; } @Override public String getLoginUserId() { - UserInfo userInfo = currentUser.get(); + UserInfo userInfo = CURRENT_USER.get(); return userInfo != null ? userInfo.getUserId() : null; } @Override public int getPlatformId() { - UserInfo userInfo = currentUser.get(); + UserInfo userInfo = CURRENT_USER.get(); return userInfo != null ? userInfo.getPlatformId() : DEFAULT_PLATFORM; } @@ -42,9 +42,9 @@ public int getPlatformId() { */ @Override public void setTenants(List tenants) { - UserInfo userInfo = currentUser.get(); + UserInfo userInfo = CURRENT_USER.get(); userInfo.setTenants(tenants); - currentUser.set(userInfo); + CURRENT_USER.set(userInfo); } /** @@ -52,7 +52,7 @@ public void setTenants(List tenants) { */ public static void setCurrentUser(UserInfo userInfo) { - currentUser.set(userInfo); + CURRENT_USER.set(userInfo); } /** @@ -60,7 +60,7 @@ public static void setCurrentUser(UserInfo userInfo) { */ public static UserInfo getCurrentUser() { - return currentUser.get(); + return CURRENT_USER.get(); } /** @@ -68,7 +68,7 @@ public static UserInfo getCurrentUser() { */ public static void clear() { - currentUser.remove(); + CURRENT_USER.remove(); } diff --git a/base/src/main/java/com/tinyengine/it/login/controller/LoginController.java b/base/src/main/java/com/tinyengine/it/login/controller/LoginController.java index ce4d2d9d..252ff776 100644 --- a/base/src/main/java/com/tinyengine/it/login/controller/LoginController.java +++ b/base/src/main/java/com/tinyengine/it/login/controller/LoginController.java @@ -16,8 +16,8 @@ import com.tinyengine.it.common.context.LoginUserContext; import com.tinyengine.it.common.exception.ExceptionEnum; import com.tinyengine.it.common.log.SystemControllerLog; -import com.tinyengine.it.login.Utils.JwtUtil; -import com.tinyengine.it.login.Utils.SM3PasswordUtil; +import com.tinyengine.it.login.utils.JwtUtil; +import com.tinyengine.it.login.utils.SM3PasswordUtil; import com.tinyengine.it.login.config.context.DefaultLoginUserContext; import com.tinyengine.it.login.model.PasswordResult; import com.tinyengine.it.login.model.PasswordValidationResult; @@ -56,8 +56,8 @@ import java.util.ArrayList; import java.util.List; -import static com.tinyengine.it.login.Utils.SM2EncryptionUtil.decrypt; -import static com.tinyengine.it.login.Utils.SM2EncryptionUtil.getPrivateKeyFromBase64; +import static com.tinyengine.it.login.utils.SM2EncryptionUtil.decrypt; +import static com.tinyengine.it.login.utils.SM2EncryptionUtil.getPrivateKeyFromBase64; /** * Login Controller @@ -111,7 +111,7 @@ public class LoginController { public Result createUser(@Valid @RequestBody User user) throws Exception { PasswordValidationResult passwordValidationResult = configurablePasswordValidator .validateWithPolicy(user.getPassword()); - if(!passwordValidationResult.isValid()) { + if (!passwordValidationResult.isValid()) { return Result.failed("密码格式检验失败", passwordValidationResult.getErrorMessage()); } PasswordResult password = SM3PasswordUtil.createPassword(user.getPassword()); @@ -150,7 +150,7 @@ public Result login(@RequestBody User user) throws Exception { PrivateKey privateKey = getPrivateKeyFromBase64(userResult.getPrivateKey()); String salt = decrypt(userResult.getSalt(), privateKey); - if (authenticate(salt, user.getPassword(),userResult.getPassword())) { + if (authenticate(salt, user.getPassword(), userResult.getPassword())) { List tenants = authUsersUnitsRolesMapper.queryAllTenantByUserId(Integer.valueOf(userResult.getId())); String token = jwtUtil.generateToken(user.getUsername(), "USER", userResult.getId(), tenants, 1); @@ -186,7 +186,7 @@ public Result login(@RequestBody User user) throws Exception { public Result forgotPassword(@RequestBody User user) throws Exception { PasswordValidationResult passwordValidationResult = configurablePasswordValidator .validateWithPolicy(user.getPassword()); - if(!passwordValidationResult.isValid()) { + if (!passwordValidationResult.isValid()) { return Result.success(passwordValidationResult); } PasswordResult password = SM3PasswordUtil.createPassword(user.getPassword()); diff --git a/base/src/main/java/com/tinyengine/it/login/model/UserInfo.java b/base/src/main/java/com/tinyengine/it/login/model/UserInfo.java index da25c2c6..4c84c825 100644 --- a/base/src/main/java/com/tinyengine/it/login/model/UserInfo.java +++ b/base/src/main/java/com/tinyengine/it/login/model/UserInfo.java @@ -36,19 +36,33 @@ public UserInfo(String userId, String username, List tenants) { } // getter和setter方法 - public String getUserId() { return userId; } - public void setUserId(String userId) { this.userId = userId; } - public String getUsername() { return username; } - public void setUsername(String username) { this.username = username; } - public List getTenants() { return tenants; } - public void setTenants(List tenants) { this.tenants = tenants; } - public int getPlatformId() { return platformId; } - public void setPlatformId(int platformId) { this.platformId = platformId; } - public String getRoles() { return roles; } - public void setRoles(String roles) { this.roles = roles; } - public String getToken() { return token; } - public void setToken(String token) { this.token = token; } - public String getDepartment() { return department; } - public void setDepartment(String department) { this.department = department; } + public String getUserId() { + return userId; } + public void setUserId(String userId) { + this.userId = userId; } + public String getUsername() { + return username; } + public void setUsername(String username) { + this.username = username; } + public List getTenants() { + return tenants; } + public void setTenants(List tenants) { + this.tenants = tenants; } + public int getPlatformId() { + return platformId; } + public void setPlatformId(int platformId) { + this.platformId = platformId; } + public String getRoles() { + return roles; } + public void setRoles(String roles) { + this.roles = roles; } + public String getToken() { + return token; } + public void setToken(String token) { + this.token = token; } + public String getDepartment() { + return department; } + public void setDepartment(String department) { + this.department = department; } } \ No newline at end of file diff --git a/base/src/main/java/com/tinyengine/it/login/service/ConfigurablePasswordValidator.java b/base/src/main/java/com/tinyengine/it/login/service/ConfigurablePasswordValidator.java index 1d910978..6ca1e231 100644 --- a/base/src/main/java/com/tinyengine/it/login/service/ConfigurablePasswordValidator.java +++ b/base/src/main/java/com/tinyengine/it/login/service/ConfigurablePasswordValidator.java @@ -17,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Locale; import java.util.regex.Pattern; /** @@ -28,6 +29,12 @@ public class ConfigurablePasswordValidator { @Autowired private PasswordPolicyConfig passwordPolicy; + // 预编译正则表达式,避免重复编译 + private static final Pattern LOWERCASE_PATTERN = Pattern.compile("[a-z]"); + private static final Pattern UPPERCASE_PATTERN = Pattern.compile("[A-Z]"); + private static final Pattern DIGIT_PATTERN = Pattern.compile("[0-9]"); + private static final Pattern CONSECUTIVE_CHARS_PATTERN = Pattern.compile("(.)\\1{2,}"); + public PasswordValidationResult validateWithPolicy(String password) { PasswordValidationResult result = new PasswordValidationResult(); @@ -40,29 +47,29 @@ public PasswordValidationResult validateWithPolicy(String password) { // 长度检查 if (password.length() < passwordPolicy.getMinLength()) { result.setValid(false); - result.addError(String.format("密码长度至少%d位", passwordPolicy.getMinLength())); + result.addError(String.format(Locale.ROOT, "密码长度至少%d位", passwordPolicy.getMinLength())); } if (password.length() > passwordPolicy.getMaxLength()) { result.setValid(false); - result.addError(String.format("密码长度不能超过%d位", passwordPolicy.getMaxLength())); + result.addError(String.format(Locale.ROOT, "密码长度不能超过%d位", passwordPolicy.getMaxLength())); } - // 字符类型检查 + // 字符类型检查 - 使用预编译的Pattern if (passwordPolicy.isRequireLowerCase() && - !Pattern.compile("[a-z]").matcher(password).find()) { + !LOWERCASE_PATTERN.matcher(password).find()) { result.setValid(false); result.addError("密码必须包含小写字母"); } if (passwordPolicy.isRequireUpperCase() && - !Pattern.compile("[A-Z]").matcher(password).find()) { + !UPPERCASE_PATTERN.matcher(password).find()) { result.setValid(false); result.addError("密码必须包含大写字母"); } if (passwordPolicy.isRequireDigit() && - !Pattern.compile("[0-9]").matcher(password).find()) { + !DIGIT_PATTERN.matcher(password).find()) { result.setValid(false); result.addError("密码必须包含数字"); } @@ -76,9 +83,9 @@ public PasswordValidationResult validateWithPolicy(String password) { } } - // 其他安全检查 + // 其他安全检查 - 使用预编译的Pattern if (passwordPolicy.isCheckConsecutiveChars() && - Pattern.compile("(.)\\1{2,}").matcher(password).find()) { + CONSECUTIVE_CHARS_PATTERN.matcher(password).find()) { result.setValid(false); result.addError("密码不能包含3个及以上连续相同字符"); } diff --git a/base/src/main/java/com/tinyengine/it/login/service/impl/LoginServiceImpl.java b/base/src/main/java/com/tinyengine/it/login/service/impl/LoginServiceImpl.java index 4f835bf8..7cd9b96c 100644 --- a/base/src/main/java/com/tinyengine/it/login/service/impl/LoginServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/login/service/impl/LoginServiceImpl.java @@ -21,7 +21,6 @@ import com.tinyengine.it.mapper.UserMapper; import com.tinyengine.it.model.entity.AuthUsersUnitsRoles; import com.tinyengine.it.model.entity.User; -import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -31,17 +30,18 @@ import java.util.Base64; import java.util.List; -import static com.tinyengine.it.login.Utils.SM2EncryptionUtil.decrypt; -import static com.tinyengine.it.login.Utils.SM2EncryptionUtil.encrypt; -import static com.tinyengine.it.login.Utils.SM2EncryptionUtil.generateSM2KeyPair; -import static com.tinyengine.it.login.Utils.SM2EncryptionUtil.getPrivateKeyFromBase64; -import static com.tinyengine.it.login.Utils.SM2EncryptionUtil.getPublicKeyFromBase64; +import static com.tinyengine.it.login.utils.SM2EncryptionUtil.decrypt; +import static com.tinyengine.it.login.utils.SM2EncryptionUtil.encrypt; +import static com.tinyengine.it.login.utils.SM2EncryptionUtil.generateSM2KeyPair; +import static com.tinyengine.it.login.utils.SM2EncryptionUtil.getPrivateKeyFromBase64; +import static com.tinyengine.it.login.utils.SM2EncryptionUtil.getPublicKeyFromBase64; @Service public class LoginServiceImpl extends ServiceImpl implements LoginService { @Autowired AuthUsersUnitsRolesMapper authUsersUnitsRolesMapper; + /** * 新增表t_user数据 * diff --git a/base/src/main/java/com/tinyengine/it/login/Utils/JwtUtil.java b/base/src/main/java/com/tinyengine/it/login/utils/JwtUtil.java similarity index 95% rename from base/src/main/java/com/tinyengine/it/login/Utils/JwtUtil.java rename to base/src/main/java/com/tinyengine/it/login/utils/JwtUtil.java index effd5f5b..ab7a3ed2 100644 --- a/base/src/main/java/com/tinyengine/it/login/Utils/JwtUtil.java +++ b/base/src/main/java/com/tinyengine/it/login/utils/JwtUtil.java @@ -10,7 +10,7 @@ * */ -package com.tinyengine.it.login.Utils; +package com.tinyengine.it.login.utils; import com.tinyengine.it.login.service.TokenBlacklistService; import com.tinyengine.it.model.entity.Tenant; @@ -42,7 +42,7 @@ public class JwtUtil { @Autowired private TokenBlacklistService tokenBlacklistService; - private static final long EXPIRATION_TIME = 21600000; // 6小时 = 6 * 60 * 60 * 1000 = 21600000 毫秒 + private static final long EXPIRATION_TIME = 21600000L; // 6小时 = 6 * 60 * 60 * 1000 = 21600000 毫秒 private static final String DEFAULT_SECRET = "tiny-engine-backend-secret-key-at-jwt-login"; // 避免启动时环境变量未加载的问题 diff --git a/base/src/main/java/com/tinyengine/it/login/Utils/SM2EncryptionUtil.java b/base/src/main/java/com/tinyengine/it/login/utils/SM2EncryptionUtil.java similarity index 96% rename from base/src/main/java/com/tinyengine/it/login/Utils/SM2EncryptionUtil.java rename to base/src/main/java/com/tinyengine/it/login/utils/SM2EncryptionUtil.java index d931867b..61ae0eaf 100644 --- a/base/src/main/java/com/tinyengine/it/login/Utils/SM2EncryptionUtil.java +++ b/base/src/main/java/com/tinyengine/it/login/utils/SM2EncryptionUtil.java @@ -10,7 +10,7 @@ * */ -package com.tinyengine.it.login.Utils; +package com.tinyengine.it.login.utils; import org.bouncycastle.jce.provider.BouncyCastleProvider; diff --git a/base/src/main/java/com/tinyengine/it/login/Utils/SM3PasswordUtil.java b/base/src/main/java/com/tinyengine/it/login/utils/SM3PasswordUtil.java similarity index 95% rename from base/src/main/java/com/tinyengine/it/login/Utils/SM3PasswordUtil.java rename to base/src/main/java/com/tinyengine/it/login/utils/SM3PasswordUtil.java index 0cff9fc2..244bf523 100644 --- a/base/src/main/java/com/tinyengine/it/login/Utils/SM3PasswordUtil.java +++ b/base/src/main/java/com/tinyengine/it/login/utils/SM3PasswordUtil.java @@ -10,7 +10,7 @@ * */ -package com.tinyengine.it.login.Utils; +package com.tinyengine.it.login.utils; import com.tinyengine.it.login.model.PasswordResult; import org.bouncycastle.jce.provider.BouncyCastleProvider; diff --git a/base/src/main/java/com/tinyengine/it/mapper/AuthUsersUnitsRolesMapper.java b/base/src/main/java/com/tinyengine/it/mapper/AuthUsersUnitsRolesMapper.java index 66fd1ccd..572e6558 100644 --- a/base/src/main/java/com/tinyengine/it/mapper/AuthUsersUnitsRolesMapper.java +++ b/base/src/main/java/com/tinyengine/it/mapper/AuthUsersUnitsRolesMapper.java @@ -1,7 +1,5 @@ package com.tinyengine.it.mapper; -import com.tinyengine.it.model.entity.AuthUsersUnitsRoles; -import com.tinyengine.it.model.entity.Resource; import com.tinyengine.it.model.entity.AuthUsersUnitsRoles; import com.tinyengine.it.model.entity.Tenant; import org.apache.ibatis.annotations.Param; diff --git a/base/src/main/java/com/tinyengine/it/service/app/AppTemplateService.java b/base/src/main/java/com/tinyengine/it/service/app/AppTemplateService.java index 47c80a4b..4e2d03c0 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/AppTemplateService.java +++ b/base/src/main/java/com/tinyengine/it/service/app/AppTemplateService.java @@ -16,8 +16,6 @@ import com.tinyengine.it.model.dto.AppDto; import com.tinyengine.it.model.entity.App; -import java.util.List; - public interface AppTemplateService { /** * 分页查询应用模版所有信息 diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/AppServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/AppServiceImpl.java index d6631014..829dd911 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/impl/AppServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/AppServiceImpl.java @@ -104,7 +104,7 @@ public AppDto queryAllAppByPage(Integer currentPage, Integer pageSize, String or pageSize = 1000; // 限制最大页大小 } int offset = (currentPage - 1) * pageSize; - List apps = this.baseMapper.queryAllAppByPage(pageSize, offset, app.getName(), + List apps = this.baseMapper.queryAllAppByPage(pageSize, offset, app.getName(), app.getIndustryId(), app.getSceneId(), app.getFramework(), orderBy, app.getCreatedBy()); Integer total = this.baseMapper.queryAppTotal(); AppDto appDto = new AppDto(); diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/AppTemplateServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/AppTemplateServiceImpl.java index ddd731e2..702e5213 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/impl/AppTemplateServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/AppTemplateServiceImpl.java @@ -112,7 +112,7 @@ public AppDto queryAllAppTemplate(Integer currentPage, Integer pageSize, String } int offset = (currentPage - 1) * pageSize; - List apps = this.baseMapper.queryAllAppTemplate(pageSize, offset, app.getName(), + List apps = this.baseMapper.queryAllAppTemplate(pageSize, offset, app.getName(), app.getIndustryId(), app.getSceneId(), app.getFramework(), orderBy, app.getCreatedBy()); Integer total = this.baseMapper.queryAppTemplateTotal(); AppDto appDto = new AppDto(); diff --git a/base/src/main/java/com/tinyengine/it/service/platform/impl/TenantServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/platform/impl/TenantServiceImpl.java index 521db62f..03b0ad6e 100644 --- a/base/src/main/java/com/tinyengine/it/service/platform/impl/TenantServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/platform/impl/TenantServiceImpl.java @@ -111,7 +111,7 @@ public Integer updateTenantById(Tenant tenant) { @Override public Integer createTenant(Tenant tenant) { int result = baseMapper.createTenant(tenant); - if(result == 1) { + if (result == 1) { AuthUsersUnitsRoles authUsersUnitsRoles = new AuthUsersUnitsRoles(); authUsersUnitsRoles.setTenantId(Integer.valueOf(tenant.getId())); authUsersUnitsRoles.setRoleId(2);