fix: 优化登录门户逻辑
This commit is contained in:
parent
30abebea60
commit
ae57efdae2
@ -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) {
|
||||||
|
|||||||
@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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("用户无权限访问该平台");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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})
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user