Skip to content

Commit d871741

Browse files
committed
fix: modify tenant API
1 parent b08a8e7 commit d871741

7 files changed

Lines changed: 46 additions & 19 deletions

File tree

base/src/main/java/com/tinyengine/it/common/exception/ExceptionEnum.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,10 +312,16 @@ public enum ExceptionEnum implements IBaseError {
312312
* Cm 337 exception enum.
313313
*/
314314
CM337("CM337", "组织不存在"),
315+
315316
/**
316317
* Cm 338 exception enum.
317318
*/
318-
CM338("CM338", "用户不存在,请重新注册");
319+
CM338("CM338", "用户不存在,请重新注册"),
320+
321+
/**
322+
* Cm 339 exception enum.
323+
*/
324+
CM339("CM338", "token检验失败,请重新登录");
319325

320326
/**
321327
* 错误码

base/src/main/java/com/tinyengine/it/login/config/SSOInterceptor.java

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212

1313
package com.tinyengine.it.login.config;
1414

15+
import com.tinyengine.it.common.exception.ExceptionEnum;
16+
import com.tinyengine.it.common.exception.ServiceException;
1517
import com.tinyengine.it.login.utils.JwtUtil;
1618
import com.tinyengine.it.login.config.context.DefaultLoginUserContext;
1719
import com.tinyengine.it.login.model.UserInfo;
@@ -35,18 +37,15 @@ public class SSOInterceptor implements HandlerInterceptor {
3537
@Autowired
3638
private JwtUtil jwtUtil;
3739

38-
private static final String SSO_SERVER = System.getenv("SSO_SERVER");
39-
4040
@Override
4141
public boolean preHandle(HttpServletRequest request,
4242
HttpServletResponse response, Object handler) throws Exception {
4343

4444
String authorization = request.getHeader("Authorization");
4545
// 如果没有token,重定向到登录页
4646
if (authorization == null || authorization.isEmpty()) {
47-
log.info("No token, redirecting to: {}", SSO_SERVER);
48-
response.sendRedirect(SSO_SERVER);
49-
return false;
47+
log.info("No token");
48+
throw new ServiceException(ExceptionEnum.CM336.getResultCode(), ExceptionEnum.CM336.getResultMsg());
5049
}
5150
String token = jwtUtil.getTokenFromRequest(authorization);
5251
String requestURI = request.getRequestURI();
@@ -57,8 +56,7 @@ public boolean preHandle(HttpServletRequest request,
5756
// 验证token
5857
if (!jwtUtil.validateToken(token)) {
5958
log.warn("Token validation failed");
60-
response.sendRedirect(SSO_SERVER);
61-
return false;
59+
throw new ServiceException(ExceptionEnum.CM339.getResultCode(), ExceptionEnum.CM339.getResultMsg());
6260
}
6361

6462
// 从token中获取用户信息
@@ -72,8 +70,7 @@ public boolean preHandle(HttpServletRequest request,
7270
// 检查必需的用户信息
7371
if (username == null || username.isEmpty() || userId == null) {
7472
log.warn("User information is incomplete - username: {}, userId: {}", username, userId);
75-
response.sendRedirect(SSO_SERVER);
76-
return false;
73+
throw new ServiceException(ExceptionEnum.CM339.getResultCode(), ExceptionEnum.CM339.getResultMsg());
7774
}
7875

7976
// 存储用户信息到LoginUserContext
@@ -90,9 +87,8 @@ public boolean preHandle(HttpServletRequest request,
9087

9188
} catch (Exception e) {
9289
log.error("Token validation exception: {}", e.getMessage(), e);
93-
response.sendRedirect(SSO_SERVER);
9490
DefaultLoginUserContext.clear();
95-
return false;
91+
throw new ServiceException(ExceptionEnum.CM339.getResultCode(), ExceptionEnum.CM339.getResultMsg());
9692
}
9793
}
9894

base/src/main/java/com/tinyengine/it/login/config/context/DefaultLoginUserContext.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,13 @@ public String getTenantId() {
3030
if (tenantList == null || tenantList.isEmpty()) {
3131
return DEFAULT_TENANT;
3232
}
33+
for (Tenant tenant : tenantList) {
34+
if (tenant.getIsInUse()) {
35+
return tenant.getId();
36+
}
37+
}
3338

34-
return tenantList.get(0).getId();
39+
return DEFAULT_TENANT;
3540
}
3641

3742
@Override

base/src/main/java/com/tinyengine/it/login/controller/LoginController.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -239,18 +239,27 @@ public Result<ValidationResult> validateToken(@RequestParam String token) {
239239
@GetMapping("/user/tenant")
240240
public Result<SSOTicket> setTenant(@RequestParam Integer tenantId) {
241241
List<Tenant> tenants = loginUserContext.getTenants();
242+
if (tenantId == null) {
243+
return Result.failed(ExceptionEnum.CM320);
244+
}
242245
if (tenants == null || tenants.isEmpty()) {
243246
return Result.failed(ExceptionEnum.CM337);
244247
}
245-
List<Tenant> currentTenant = new ArrayList<>();
248+
List<Tenant> tenantList = new ArrayList<>();
249+
boolean found = false;
246250
for (Tenant tenant : tenants) {
247251
if (tenant.getId().equals(tenantId.toString())) {
248-
currentTenant.add(tenant);
252+
tenant.setIsInUse(true);
253+
found = true;
249254
}
255+
tenant.setIsInUse(false);
256+
tenantList.add(tenant);
250257
}
251-
if (currentTenant.isEmpty()) {
258+
259+
if (!found) {
252260
return Result.failed(ExceptionEnum.CM337);
253261
}
262+
254263
// 通过 RequestContextHolder 获取请求
255264
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes())
256265
.getRequest();
@@ -259,7 +268,7 @@ public Result<SSOTicket> setTenant(@RequestParam Integer tenantId) {
259268
if (headerToken == null || headerToken.isEmpty()) {
260269
return Result.failed(ExceptionEnum.CM336);
261270
}
262-
String token = jwtUtil.generateTokenWithSelectedTenant(headerToken, currentTenant);
271+
String token = jwtUtil.generateTokenWithSelectedTenant(headerToken, tenantList);
263272
// 将原 token 加入黑名单
264273
Claims claims = Jwts.parser()
265274
.verifyWith(JwtUtil.getSecretKey())

base/src/main/java/com/tinyengine/it/model/entity/Tenant.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ public class Tenant {
5454
@Schema(name = "description", description = "组织描述")
5555
private String description;
5656

57+
@TableField(exist = false)
58+
@Schema(name = "isInUse", description = "是否当前所在组织")
59+
private Boolean isInUse;
60+
5761
@TableField(fill = FieldFill.INSERT)
5862
@Schema(name = "createdTime", description = "创建时间")
5963
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

base/src/main/java/com/tinyengine/it/service/platform/impl/TenantServiceImpl.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,11 @@
1212

1313
package com.tinyengine.it.service.platform.impl;
1414

15+
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
1516
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
1617
import com.tinyengine.it.common.context.LoginUserContext;
18+
import com.tinyengine.it.common.exception.ExceptionEnum;
19+
import com.tinyengine.it.common.exception.ServiceException;
1720
import com.tinyengine.it.mapper.TenantMapper;
1821
import com.tinyengine.it.mapper.AuthUsersUnitsRolesMapper;
1922
import com.tinyengine.it.model.entity.AuthUsersUnitsRoles;
@@ -110,6 +113,12 @@ public Integer updateTenantById(Tenant tenant) {
110113
*/
111114
@Override
112115
public Integer createTenant(Tenant tenant) {
116+
QueryWrapper<Tenant> queryWrapper = new QueryWrapper<>();
117+
queryWrapper.eq("name_cn", tenant.getNameCn());
118+
Tenant tenantResult = this.baseMapper.selectOne(queryWrapper);
119+
if (tenantResult != null) {
120+
throw new ServiceException(ExceptionEnum.CM003.getResultCode(), ExceptionEnum.CM003.getResultMsg());
121+
}
113122
int result = baseMapper.createTenant(tenant);
114123
if (result == 1) {
115124
AuthUsersUnitsRoles authUsersUnitsRoles = new AuthUsersUnitsRoles();

example-docker.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ COPY --from=build /app/all-MiniLM-L6-v2 /app/all-MiniLM-L6-v2
1919
# 设置环境变量
2020
ENV FOLDER_PATH="/app/documents"
2121

22-
# 登录页面路径
23-
ENV SSO_SERVER=""
2422
#资源下载接口路径
2523
ENV TINY_ENGINE_URL=""
2624
ENTRYPOINT ["java", "-jar", "tiny-engine-app.jar", "--spring.profiles.active=alpha"]

0 commit comments

Comments
 (0)