feat(system): 实现登录用户所属租户切换功能
- 增加判断当前登录用户切换到自身租户的直接放行逻辑 - 在租户切换成功时生成新的访问令牌并返回 - 异步保存登录记录,记录切换行为 - 解决注册即时场景下新超管租户切换验证不足的问题
This commit is contained in:
@@ -1184,6 +1184,13 @@ public class MainController extends BaseController {
|
|||||||
if (current == null) {
|
if (current == null) {
|
||||||
return fail("未登录或登录已过期", null);
|
return fail("未登录或登录已过期", null);
|
||||||
}
|
}
|
||||||
|
// 切换到当前登录用户所属租户(如注册成功后刷新权限令牌)直接放行:
|
||||||
|
// 注册即时场景下可切换租户列表校验可能未能命中刚创建的新超管,自己切自己一定合法。
|
||||||
|
if (targetTenantId.equals(current.getTenantId())) {
|
||||||
|
String access_token = generateToken(current);
|
||||||
|
loginRecordService.saveAsync(current.getUsername(), LoginRecord.TYPE_LOGIN, null, current.getTenantId(), request);
|
||||||
|
return success("切换成功", new LoginResult(access_token, current));
|
||||||
|
}
|
||||||
// 校验目标租户在可切换范围内(与 switchableTenants 一致)
|
// 校验目标租户在可切换范围内(与 switchableTenants 一致)
|
||||||
User target = findSwitchableUser(current, targetTenantId);
|
User target = findSwitchableUser(current, targetTenantId);
|
||||||
if (target == null) {
|
if (target == null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user