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

View File

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

View File

@ -83,7 +83,7 @@
and u.orgid = #{orgid}
</if>
<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 test="tenantId != null and tenantId != ''">
and (ut.TENANT_ID = #{tenantId} OR u.tenant_id = #{tenantId})