fix: 优化登录门户逻辑

This commit is contained in:
tangwei 2026-08-03 13:41:20 +08:00
parent 30abebea60
commit ae57efdae2
4 changed files with 17 additions and 7 deletions

View File

@ -70,7 +70,8 @@ public class SmsVerifyCodeController {
@Resource @Resource
private SysUserTenantMapper sysUserTenantMapper; private SysUserTenantMapper sysUserTenantMapper;
@Resource
private SysUserTenantMapper userTenantMapper;
@Resource @Resource
private ISdHbrvDicService hbrvDicService; private ISdHbrvDicService hbrvDicService;
@ -184,7 +185,7 @@ public class SmsVerifyCodeController {
*/ */
@PostMapping("/register") @PostMapping("/register")
@Operation(summary = "注册用户") @Operation(summary = "注册用户")
@Transactional @Transactional(rollbackFor = Exception.class)
public ResponseResult register(@RequestHeader(value = "Tenant_id", required = false) String tenantId,@RequestBody SmsVerifyCodeRequest smsVerifyCodeRequest) { public ResponseResult register(@RequestHeader(value = "Tenant_id", required = false) String tenantId,@RequestBody SmsVerifyCodeRequest smsVerifyCodeRequest) {
String code = smsVerifyCodeRequest.getCode(); String code = smsVerifyCodeRequest.getCode();
if (smsVerifyCodeRequest.getPhone() == null || smsVerifyCodeRequest.getPhone().isEmpty()) { if (smsVerifyCodeRequest.getPhone() == null || smsVerifyCodeRequest.getPhone().isEmpty()) {
@ -233,6 +234,10 @@ public class SmsVerifyCodeController {
// 给注册用户加上默认权限 // 给注册用户加上默认权限
SysUser savedUser = userService.getUserByPhone(smsVerifyCodeRequest.getPhone(),tenantId); SysUser savedUser = userService.getUserByPhone(smsVerifyCodeRequest.getPhone(),tenantId);
if (savedUser != null) { if (savedUser != null) {
SysUserTenant sysUserTenant = new SysUserTenant();
sysUserTenant.setTenantId(tenantId);
sysUserTenant.setUserId(user.getId());
userTenantMapper.insert(sysUserTenant);
this.addDefaultRole(savedUser.getId(), smsVerifyCodeRequest); this.addDefaultRole(savedUser.getId(), smsVerifyCodeRequest);
} }
if (success) { if (success) {

View File

@ -74,6 +74,8 @@ public class AdminAuthServiceImpl implements IAdminAuthService {
@Override @Override
public boolean isCurrentManagedAdmin() { public boolean isCurrentManagedAdmin() {
return isManagedAdminUsername(SecurityUtils.getCurrentUsername()); String maxLevel = userMapper.getMaxLevel(SecurityUtils.getUserId());
boolean adminRole = "1".equals(maxLevel);
return adminRole||isManagedAdminUsername(SecurityUtils.getCurrentUsername());
} }
} }

View File

@ -9,6 +9,7 @@ import com.yfd.platform.system.domain.SysUser;
import com.yfd.platform.system.mapper.SysMenuMapper; import com.yfd.platform.system.mapper.SysMenuMapper;
import com.yfd.platform.system.mapper.SysUserMapper; import com.yfd.platform.system.mapper.SysUserMapper;
import com.yfd.platform.system.mapper.SysUserTenantMapper; import com.yfd.platform.system.mapper.SysUserTenantMapper;
import com.yfd.platform.system.service.IAdminAuthService;
import com.yfd.platform.system.service.IUserService; import com.yfd.platform.system.service.IUserService;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetails;
@ -38,6 +39,8 @@ public class UserDetailsServiceImpl implements UserDetailsService {
@Resource @Resource
private IUserService userService; private IUserService userService;
@Resource
private IAdminAuthService adminAuthService;
@Resource @Resource
private SysMenuMapper sysMenuMapper; private SysMenuMapper sysMenuMapper;
@ -71,7 +74,7 @@ public class UserDetailsServiceImpl implements UserDetailsService {
} }
// 判断是否为超级管理员LEVEL=1 // 判断是否为超级管理员LEVEL=1
boolean isSuperAdmin = isSuperAdmin(user.getId()); boolean isSuperAdmin = (isSuperAdmin(user.getId())||user.getUsertype()==0);
// 查询用户可访问的门户列表 // 查询用户可访问的门户列表
List<String> accessibleTenantIds = sysUserTenantMapper.getTenantIdsByUserId(user.getId()); List<String> accessibleTenantIds = sysUserTenantMapper.getTenantIdsByUserId(user.getId());
@ -79,10 +82,10 @@ public class UserDetailsServiceImpl implements UserDetailsService {
// 非超级管理员必须指定门户且必须在可访问列表中 // 非超级管理员必须指定门户且必须在可访问列表中
if (!isSuperAdmin) { if (!isSuperAdmin) {
if (StrUtil.isBlank(tenantId)) { if (StrUtil.isBlank(tenantId)) {
throw new RuntimeException("普通用户登录必须指定门户(Tenant_Id)"); throw new RuntimeException("用户无权限访问该平台");
} }
if (accessibleTenantIds == null || !accessibleTenantIds.contains(tenantId)) { if (accessibleTenantIds == null || !accessibleTenantIds.contains(tenantId)) {
throw new RuntimeException("用户无权限访问该门户"); throw new RuntimeException("用户无权限访问该平台");
} }
} }

View File

@ -83,7 +83,7 @@
and u.orgid = #{orgid} and u.orgid = #{orgid}
</if> </if>
<if test="username != null"> <if test="username != null">
and u.username LIKE '%' || #{username} || '%' and (u.username LIKE '%' || #{username} || '%' OR u.nickname LIKE '%' || #{username} || '%' OR u.phone LIKE '%' || #{username} || '%')
</if> </if>
<if test="tenantId != null and tenantId != ''"> <if test="tenantId != null and tenantId != ''">
and (ut.TENANT_ID = #{tenantId} OR u.tenant_id = #{tenantId}) and (ut.TENANT_ID = #{tenantId} OR u.tenant_id = #{tenantId})