mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
1.修改数据源标识的获取途径,由原先从前端传递,到从网关统一传递
This commit is contained in:
+1
@@ -26,6 +26,7 @@ public interface GlobalErrorCodeConstants {
|
|||||||
ErrorCode LOCKED = new ErrorCode(423, "请求失败,请稍后重试"); // 并发请求,不允许
|
ErrorCode LOCKED = new ErrorCode(423, "请求失败,请稍后重试"); // 并发请求,不允许
|
||||||
ErrorCode TOO_MANY_REQUESTS = new ErrorCode(429, "请求过于频繁,请稍后重试");
|
ErrorCode TOO_MANY_REQUESTS = new ErrorCode(429, "请求过于频繁,请稍后重试");
|
||||||
ErrorCode DATA_SOURCE_CODE_NOT_FOUND = new ErrorCode(430, "未传递数据源标识");
|
ErrorCode DATA_SOURCE_CODE_NOT_FOUND = new ErrorCode(430, "未传递数据源标识");
|
||||||
|
ErrorCode ORGAN_ID_NOT_FOUND = new ErrorCode(431, "未传组织标识");
|
||||||
|
|
||||||
// ========== 服务端错误段 ==========
|
// ========== 服务端错误段 ==========
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -19,7 +19,7 @@ import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConsta
|
|||||||
*/
|
*/
|
||||||
public class DataSourceFilter extends OncePerRequestFilter {
|
public class DataSourceFilter extends OncePerRequestFilter {
|
||||||
//数据源编码
|
//数据源编码
|
||||||
private static final String DATA_SOURCE_CODE = "dataCode";
|
private static final String DATA_SOURCE_CODE = "data-code";
|
||||||
|
|
||||||
private WebProperties webProperties;
|
private WebProperties webProperties;
|
||||||
|
|
||||||
@@ -36,12 +36,12 @@ public class DataSourceFilter extends OncePerRequestFilter {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
|
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
|
||||||
String dataSourceCode = request.getHeader(DATA_SOURCE_CODE);
|
String dataCode = request.getHeader(DATA_SOURCE_CODE);
|
||||||
if(StrUtil.isBlank(dataSourceCode)) {
|
if(StrUtil.isEmpty(dataCode)) {
|
||||||
ServletUtils.writeJSON(response, CommonResult.error(DATA_SOURCE_CODE_NOT_FOUND));
|
ServletUtils.writeJSON(response, CommonResult.error(DATA_SOURCE_CODE_NOT_FOUND));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
DynamicDataSourceContextHolder.push(dataSourceCode);
|
DynamicDataSourceContextHolder.push(dataCode);
|
||||||
filterChain.doFilter(request, response);
|
filterChain.doFilter(request, response);
|
||||||
DynamicDataSourceContextHolder.clear();
|
DynamicDataSourceContextHolder.clear();
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -152,7 +152,8 @@ public class TokenAuthenticationFilter implements GlobalFilter, Ordered {
|
|||||||
OAuth2AccessTokenCheckRespDTO tokenInfo = result.getData();
|
OAuth2AccessTokenCheckRespDTO tokenInfo = result.getData();
|
||||||
return new LoginUser().setId(tokenInfo.getUserId()).setUserType(tokenInfo.getUserType())
|
return new LoginUser().setId(tokenInfo.getUserId()).setUserType(tokenInfo.getUserType())
|
||||||
.setOrganId(tokenInfo.getOrganId()).setScopes(tokenInfo.getScopes())
|
.setOrganId(tokenInfo.getOrganId()).setScopes(tokenInfo.getScopes())
|
||||||
.setLarge(tokenInfo.getLarge()).setDbNo(tokenInfo.getDbNo()).setTableNo(tokenInfo.getTableNo());
|
.setLarge(tokenInfo.getLarge()).setDbNo(tokenInfo.getDbNo()).setTableNo(tokenInfo.getTableNo())
|
||||||
|
.setDataCode(tokenInfo.getDataCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ public class SecurityFrameworkUtils {
|
|||||||
|
|
||||||
private static final String LOGIN_USER_ID_ATTR = "login-user-id";
|
private static final String LOGIN_USER_ID_ATTR = "login-user-id";
|
||||||
private static final String LOGIN_USER_TYPE_ATTR = "login-user-type";
|
private static final String LOGIN_USER_TYPE_ATTR = "login-user-type";
|
||||||
|
private static final String DATA_CODE = "data-code";
|
||||||
|
|
||||||
private SecurityFrameworkUtils() {}
|
private SecurityFrameworkUtils() {}
|
||||||
|
|
||||||
@@ -101,6 +102,7 @@ public class SecurityFrameworkUtils {
|
|||||||
*/
|
*/
|
||||||
public static void setLoginUserHeader(ServerHttpRequest.Builder builder, LoginUser user) {
|
public static void setLoginUserHeader(ServerHttpRequest.Builder builder, LoginUser user) {
|
||||||
builder.header(LOGIN_USER_HEADER, JsonUtils.toJsonString(user));
|
builder.header(LOGIN_USER_HEADER, JsonUtils.toJsonString(user));
|
||||||
|
builder.header(DATA_CODE, user.getDataCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -109,6 +109,7 @@ public interface ErrorCodeConstants {
|
|||||||
ErrorCode ORGAN_CAN_NOT_UPDATE_SYSTEM = new ErrorCode(1_002_015_003, "系统组织不能进行修改、删除等操作!");
|
ErrorCode ORGAN_CAN_NOT_UPDATE_SYSTEM = new ErrorCode(1_002_015_003, "系统组织不能进行修改、删除等操作!");
|
||||||
ErrorCode ORGAN_NAME_DUPLICATE = new ErrorCode(1_002_015_004, "名字为【{}】的组织已存在");
|
ErrorCode ORGAN_NAME_DUPLICATE = new ErrorCode(1_002_015_004, "名字为【{}】的组织已存在");
|
||||||
ErrorCode ORGAN_WEBSITE_DUPLICATE = new ErrorCode(1_002_015_005, "域名为【{}】的组织已存在");
|
ErrorCode ORGAN_WEBSITE_DUPLICATE = new ErrorCode(1_002_015_005, "域名为【{}】的组织已存在");
|
||||||
|
ErrorCode ORGAN_DATA_CODE_NOT_EXISTS = new ErrorCode(1_002_015_006, "组织未配置数据源标识");
|
||||||
|
|
||||||
// ========== 组织套餐 1-002-016-000 ==========
|
// ========== 组织套餐 1-002-016-000 ==========
|
||||||
ErrorCode TENANT_PACKAGE_NOT_EXISTS = new ErrorCode(1_002_016_000, "组织套餐不存在");
|
ErrorCode TENANT_PACKAGE_NOT_EXISTS = new ErrorCode(1_002_016_000, "组织套餐不存在");
|
||||||
|
|||||||
+26
-5
@@ -1,6 +1,7 @@
|
|||||||
package com.cf.imes.module.system.service.auth;
|
package com.cf.imes.module.system.service.auth;
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.cf.imes.framework.common.enums.CommonStatusEnum;
|
import com.cf.imes.framework.common.enums.CommonStatusEnum;
|
||||||
import com.cf.imes.framework.common.enums.UserTypeEnum;
|
import com.cf.imes.framework.common.enums.UserTypeEnum;
|
||||||
import com.cf.imes.framework.common.exception.ServerException;
|
import com.cf.imes.framework.common.exception.ServerException;
|
||||||
@@ -47,6 +48,7 @@ import java.util.Objects;
|
|||||||
|
|
||||||
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static com.cf.imes.framework.common.util.servlet.ServletUtils.getClientIP;
|
import static com.cf.imes.framework.common.util.servlet.ServletUtils.getClientIP;
|
||||||
|
import static com.cf.imes.module.system.enums.ErrorCodeConstants.ORGAN_DATA_CODE_NOT_EXISTS;
|
||||||
import static com.cf.imes.module.system.enums.ErrorCodeConstants.ORGAN_NOT_EXISTS;
|
import static com.cf.imes.module.system.enums.ErrorCodeConstants.ORGAN_NOT_EXISTS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -121,8 +123,14 @@ public class AdminAuthServiceImpl implements AdminAuthService {
|
|||||||
socialUserService.bindSocialUser(new SocialUserBindReqDTO(user.getId(), getUserType().getValue(),
|
socialUserService.bindSocialUser(new SocialUserBindReqDTO(user.getId(), getUserType().getValue(),
|
||||||
reqVO.getSocialType(), reqVO.getSocialCode(), reqVO.getSocialState()));
|
reqVO.getSocialType(), reqVO.getSocialCode(), reqVO.getSocialState()));
|
||||||
}
|
}
|
||||||
|
Long organId = user.getOrganId();
|
||||||
|
OrganizationDO organ = organService.getOrgan(organId);
|
||||||
|
String dataSourceCode = organ.getDataSourceCode();
|
||||||
|
if(StrUtil.isBlank(dataSourceCode)) {
|
||||||
|
throw exception(ORGAN_DATA_CODE_NOT_EXISTS);
|
||||||
|
}
|
||||||
// 创建 Token 令牌,记录登录日志
|
// 创建 Token 令牌,记录登录日志
|
||||||
return createTokenAfterLoginSuccess(user.getId(), reqVO.getUsername(), LoginLogTypeEnum.LOGIN_USERNAME);
|
return createTokenAfterLoginSuccess(user.getId(), reqVO.getUsername(), LoginLogTypeEnum.LOGIN_USERNAME, dataSourceCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -145,9 +153,15 @@ public class AdminAuthServiceImpl implements AdminAuthService {
|
|||||||
if (user == null) {
|
if (user == null) {
|
||||||
throw ServiceExceptionUtil.exception(ErrorCodeConstants.USER_NOT_EXISTS);
|
throw ServiceExceptionUtil.exception(ErrorCodeConstants.USER_NOT_EXISTS);
|
||||||
}
|
}
|
||||||
|
Long organId = user.getOrganId();
|
||||||
|
OrganizationDO organ = organService.getOrgan(organId);
|
||||||
|
String dataSourceCode = organ.getDataSourceCode();
|
||||||
|
if(StrUtil.isBlank(dataSourceCode)) {
|
||||||
|
throw exception(ORGAN_DATA_CODE_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
// 创建 Token 令牌,记录登录日志
|
// 创建 Token 令牌,记录登录日志
|
||||||
return createTokenAfterLoginSuccess(user.getId(), reqVO.getMobile(), LoginLogTypeEnum.LOGIN_MOBILE);
|
return createTokenAfterLoginSuccess(user.getId(), reqVO.getMobile(), LoginLogTypeEnum.LOGIN_MOBILE, dataSourceCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createLoginLog(Long userId, String username,
|
private void createLoginLog(Long userId, String username,
|
||||||
@@ -184,8 +198,15 @@ public class AdminAuthServiceImpl implements AdminAuthService {
|
|||||||
throw ServiceExceptionUtil.exception(ErrorCodeConstants.USER_NOT_EXISTS);
|
throw ServiceExceptionUtil.exception(ErrorCodeConstants.USER_NOT_EXISTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Long organId = user.getOrganId();
|
||||||
|
OrganizationDO organ = organService.getOrgan(organId);
|
||||||
|
String dataSourceCode = organ.getDataSourceCode();
|
||||||
|
if(StrUtil.isBlank(dataSourceCode)) {
|
||||||
|
throw exception(ORGAN_DATA_CODE_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
// 创建 Token 令牌,记录登录日志
|
// 创建 Token 令牌,记录登录日志
|
||||||
return createTokenAfterLoginSuccess(user.getId(), user.getUsername(), LoginLogTypeEnum.LOGIN_SOCIAL);
|
return createTokenAfterLoginSuccess(user.getId(), user.getUsername(), LoginLogTypeEnum.LOGIN_SOCIAL, dataSourceCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
@@ -207,7 +228,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private AuthLoginRespVO createTokenAfterLoginSuccess(Long userId, String username, LoginLogTypeEnum logType) {
|
private AuthLoginRespVO createTokenAfterLoginSuccess(Long userId, String username, LoginLogTypeEnum logType, String dataCode) {
|
||||||
// 插入登陆日志
|
// 插入登陆日志
|
||||||
createLoginLog(userId, username, logType, LoginResultEnum.SUCCESS);
|
createLoginLog(userId, username, logType, LoginResultEnum.SUCCESS);
|
||||||
/*Long organId = OrganContextHolder.getOrganId();
|
/*Long organId = OrganContextHolder.getOrganId();
|
||||||
@@ -217,7 +238,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
|
|||||||
}*/
|
}*/
|
||||||
// 创建访问令牌
|
// 创建访问令牌
|
||||||
OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.createAccessToken(userId, getUserType().getValue(),
|
OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.createAccessToken(userId, getUserType().getValue(),
|
||||||
OAuth2ClientConstants.CLIENT_ID_DEFAULT, null, null, null, null, null);
|
OAuth2ClientConstants.CLIENT_ID_DEFAULT, null, null, null, null, dataCode);
|
||||||
// 构建返回结果
|
// 构建返回结果
|
||||||
return AuthConvert.INSTANCE.convert(accessTokenDO);
|
return AuthConvert.INSTANCE.convert(accessTokenDO);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user