feat: 优化登录功能,添加环境验证和环境信息记录
- 登录前验证是否存在激活的环境 - 登录前验证环境是否处于激活状态 - 登录历史中记录环境编码和环境ID - 添加错误码:NO_ACTIVE_ENVIRONMENT、ENVIRONMENT_NOT_ACTIVE、ORG_TYPE_EMPTY - 增强日志输出,显示环境信息 需求编号: 2026-01-21-001
This commit is contained in:
parent
1172ef02ad
commit
9d15d57c35
@ -66,7 +66,33 @@ public class SalesforceLoginServiceImpl implements ISalesforceLoginService {
|
||||
if (StringUtils.isEmpty(loginType)) {
|
||||
throw new SalesforceAuthException("LOGIN_TYPE_EMPTY", "登录类型不能为空");
|
||||
}
|
||||
|
||||
|
||||
String orgType = request.getOrgType();
|
||||
if (StringUtils.isEmpty(orgType)) {
|
||||
throw new SalesforceAuthException("ORG_TYPE_EMPTY", "ORG类型不能为空");
|
||||
}
|
||||
|
||||
DataiConfigEnvironment activeEnvironment = configEnvironmentService.getCurrentActiveEnvironment(orgType);
|
||||
if (activeEnvironment == null) {
|
||||
logger.warn("登录失败,当前没有激活的环境,ORG类型: {}", orgType);
|
||||
SalesforceLoginResult errorResult = new SalesforceLoginResult();
|
||||
errorResult.setSuccess(false);
|
||||
errorResult.setErrorCode("NO_ACTIVE_ENVIRONMENT");
|
||||
errorResult.setErrorMessage("当前没有激活的环境,请联系管理员激活环境后再登录");
|
||||
saveLoginHistory(errorResult, request, "failed", null);
|
||||
return errorResult;
|
||||
}
|
||||
|
||||
if (!Boolean.TRUE.equals(activeEnvironment.getIsActive())) {
|
||||
logger.warn("登录失败,当前环境未激活,环境编码: {}, ORG类型: {}", activeEnvironment.getEnvironmentCode(), orgType);
|
||||
SalesforceLoginResult errorResult = new SalesforceLoginResult();
|
||||
errorResult.setSuccess(false);
|
||||
errorResult.setErrorCode("ENVIRONMENT_NOT_ACTIVE");
|
||||
errorResult.setErrorMessage("当前环境未激活,请联系管理员激活环境后再登录");
|
||||
saveLoginHistory(errorResult, request, "failed", activeEnvironment);
|
||||
return errorResult;
|
||||
}
|
||||
|
||||
LoginStrategy strategy = loginStrategyFactory.getLoginStrategy(loginType);
|
||||
|
||||
SalesforceLoginResult result = strategy.login(request);
|
||||
@ -74,16 +100,17 @@ public class SalesforceLoginServiceImpl implements ISalesforceLoginService {
|
||||
if (result.isSuccess()) {
|
||||
|
||||
saveLoginSession(result, request);
|
||||
saveLoginHistory(result, request, "success");
|
||||
saveLoginHistory(result, request, "success", activeEnvironment);
|
||||
|
||||
String cacheKey = getCacheKeyByOrgType(request.getOrgType());
|
||||
String cacheKey = getCacheKeyByOrgType(orgType);
|
||||
CacheUtils.put(SalesforceConfigConstants.CACHE_NAME, cacheKey, result);
|
||||
|
||||
updateEnvironmentValidity(request.getOrgType(), true);
|
||||
updateEnvironmentValidity(orgType, true);
|
||||
|
||||
logger.info("Salesforce登录成功,Session ID: {}, 用户ID: {}, ORG类型: {}", result.getSessionId(), result.getUserId(), result.getOrgType());
|
||||
logger.info("Salesforce登录成功,Session ID: {}, 用户ID: {}, ORG类型: {}, 环境编码: {}",
|
||||
result.getSessionId(), result.getUserId(), result.getOrgType(), activeEnvironment.getEnvironmentCode());
|
||||
} else {
|
||||
saveLoginHistory(result, request, "failed");
|
||||
saveLoginHistory(result, request, "failed", activeEnvironment);
|
||||
logger.error("Salesforce登录失败,错误代码: {}, 错误信息: {}", result.getErrorCode(), result.getErrorMessage());
|
||||
}
|
||||
|
||||
@ -95,7 +122,7 @@ public class SalesforceLoginServiceImpl implements ISalesforceLoginService {
|
||||
errorResult.setSuccess(false);
|
||||
errorResult.setErrorCode(e.getErrorCode());
|
||||
errorResult.setErrorMessage(e.getMessage());
|
||||
saveLoginHistory(errorResult, request, "failed");
|
||||
saveLoginHistory(errorResult, request, "failed", null);
|
||||
return errorResult;
|
||||
} catch (Exception e) {
|
||||
logger.error("Salesforce登录系统异常: {}", e.getMessage(), e);
|
||||
@ -103,7 +130,7 @@ public class SalesforceLoginServiceImpl implements ISalesforceLoginService {
|
||||
errorResult.setSuccess(false);
|
||||
errorResult.setErrorCode("SYSTEM_ERROR");
|
||||
errorResult.setErrorMessage("系统异常: " + e.getMessage());
|
||||
saveLoginHistory(errorResult, request, "failed");
|
||||
saveLoginHistory(errorResult, request, "failed", null);
|
||||
return errorResult;
|
||||
}
|
||||
}
|
||||
@ -183,7 +210,7 @@ public class SalesforceLoginServiceImpl implements ISalesforceLoginService {
|
||||
}
|
||||
}
|
||||
|
||||
private void saveLoginHistory(SalesforceLoginResult result, SalesforceLoginRequest request, String status) {
|
||||
private void saveLoginHistory(SalesforceLoginResult result, SalesforceLoginRequest request, String status, DataiConfigEnvironment activeEnvironment) {
|
||||
LocalDateTime requestTime = LocalDateTime.now();
|
||||
|
||||
try {
|
||||
@ -216,6 +243,11 @@ public class SalesforceLoginServiceImpl implements ISalesforceLoginService {
|
||||
history.setOrganizationId(result.getOrganizationId());
|
||||
history.setLoginStatus(status);
|
||||
|
||||
if (activeEnvironment != null) {
|
||||
history.setEnvironmentCode(activeEnvironment.getEnvironmentCode());
|
||||
history.setEnvironmentId(activeEnvironment.getId());
|
||||
}
|
||||
|
||||
HttpServletRequest httpRequest = getCurrentRequest();
|
||||
if (httpRequest != null) {
|
||||
String userAgent = httpRequest.getHeader("User-Agent");
|
||||
@ -256,7 +288,11 @@ public class SalesforceLoginServiceImpl implements ISalesforceLoginService {
|
||||
history.setOrgType(request.getOrgType());
|
||||
|
||||
loginHistoryService.insertDataiSfLoginHistory(history);
|
||||
logger.debug("保存登录历史记录成功,状态: {}", status);
|
||||
|
||||
String envInfo = activeEnvironment != null
|
||||
? String.format("环境编码: %s, 环境ID: %d", activeEnvironment.getEnvironmentCode(), activeEnvironment.getId())
|
||||
: "无激活环境";
|
||||
logger.debug("保存登录历史记录成功,状态: {}, {}", status, envInfo);
|
||||
} catch (Exception e) {
|
||||
logger.error("保存登录历史记录失败: {}", e.getMessage(), e);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user