Commit b679eb19 authored by tanyang's avatar tanyang

修复短信登录没有默认租户问题

parent 7127b465
...@@ -3,6 +3,7 @@ package com.dsk.web.controller.system; ...@@ -3,6 +3,7 @@ package com.dsk.web.controller.system;
import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.annotation.SaCheckLogin;
import cn.dev33.satoken.annotation.SaIgnore; import cn.dev33.satoken.annotation.SaIgnore;
import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.lang.RegexPool; import cn.hutool.core.lang.RegexPool;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
...@@ -80,6 +81,38 @@ public class SysLoginController { ...@@ -80,6 +81,38 @@ public class SysLoginController {
// /**
// * 发送短信验证码
// *
// * @param phones 电话号
// * @param templateId 模板ID
// */
// @SaIgnore
// @GetMapping("/send/sms/code")
// public R<Object> sendAliyun(String phones, String templateId) {
// LinkedHashMap<String, String> map = new LinkedHashMap<>(1);
// map.put("code", RandomUtil.randomNumbers(4));
// SmsBlend smsBlend = SmsFactory.createSmsBlend(SupplierType.ALIBABA);
// SmsResponse smsResponse = smsBlend.sendMessage(phones, templateId, map);
// return R.ok(smsResponse);
// }
/**
* 短信登录
*
* @param smsLoginBody 登录信息
* @return 结果
*/
@SaIgnore
@PostMapping("/smsLogin")
public R<LoginVo> smsLogin(@Validated @RequestBody SmsLoginBody smsLoginBody) {
// 生成令牌
LoginVo loginVo=loginService.smsLogin(smsLoginBody.getPhonenumber(), smsLoginBody.getSmsCode());
return R.ok(loginVo);
}
/** /**
* 动态切换租户 * 动态切换租户
* *
...@@ -118,6 +151,11 @@ public class SysLoginController { ...@@ -118,6 +151,11 @@ public class SysLoginController {
return R.ok(new ArrayList<>()); return R.ok(new ArrayList<>());
} }
List<SysTenantVo> tenantList=loginService.tenantListByAccount(phone); List<SysTenantVo> tenantList=loginService.tenantListByAccount(phone);
if(CollectionUtil.isNotEmpty(tenantList)){
for (SysTenantVo sysTenantVo : tenantList) {
sysTenantVo.setCompanyName("");
}
}
return R.ok(tenantList); return R.ok(tenantList);
} }
...@@ -150,35 +188,6 @@ public class SysLoginController { ...@@ -150,35 +188,6 @@ public class SysLoginController {
return R.ok(MapUtil.of("tenantId",defaultTenant)); return R.ok(MapUtil.of("tenantId",defaultTenant));
} }
/**
* 发送短信验证码
*
* @param phones 电话号
* @param templateId 模板ID
*/
@SaIgnore
@GetMapping("/send/sms/code")
public R<Object> sendAliyun(String phones, String templateId) {
LinkedHashMap<String, String> map = new LinkedHashMap<>(1);
map.put("code", RandomUtil.randomNumbers(4));
SmsBlend smsBlend = SmsFactory.createSmsBlend(SupplierType.ALIBABA);
SmsResponse smsResponse = smsBlend.sendMessage(phones, templateId, map);
return R.ok(smsResponse);
}
/**
* 短信登录
*
* @param smsLoginBody 登录信息
* @return 结果
*/
@SaIgnore
@PostMapping("/smsLogin")
public R<LoginVo> smsLogin(@Validated @RequestBody SmsLoginBody smsLoginBody) {
// 生成令牌
LoginVo loginVo=loginService.smsLogin(smsLoginBody.getPhonenumber(), smsLoginBody.getSmsCode());
return R.ok(loginVo);
}
/** /**
* 邮件登录 * 邮件登录
* *
......
...@@ -50,5 +50,5 @@ xcx.code.not.blank=\u5C0F\u7A0B\u5E8Fcode\u4E0D\u80FD\u4E3A\u7A7A ...@@ -50,5 +50,5 @@ xcx.code.not.blank=\u5C0F\u7A0B\u5E8Fcode\u4E0D\u80FD\u4E3A\u7A7A
##\u79DF\u6237 ##\u79DF\u6237
company.number.not.blank=\u4F01\u4E1A\u7F16\u53F7\u4E0D\u80FD\u4E3A\u7A7A company.number.not.blank=\u4F01\u4E1A\u7F16\u53F7\u4E0D\u80FD\u4E3A\u7A7A
company.not.exists=\u5BF9\u4E0D\u8D77, \u60A8\u7684\u4F01\u4E1A\u4E0D\u5B58\u5728\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458 company.not.exists=\u5BF9\u4E0D\u8D77, \u60A8\u7684\u4F01\u4E1A\u4E0D\u5B58\u5728\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
company.blocked=\u5BF9\u4E0D\u8D77\uFF0C\u60A8\u7684\u4F01\u4E1A\u5DF2\u7981\u7528\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458 company.blocked=\u5BF9\u4E0D\u8D77\uFF0C\u60A8\u7684\u4F01\u4E1A\u5DF2\u505C\u7528\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
company.expired=\u5BF9\u4E0D\u8D77\uFF0C\u60A8\u7684\u4F01\u4E1A\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458 company.expired=\u5BF9\u4E0D\u8D77\uFF0C\u60A8\u7684\u4F01\u4E1A\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
\ No newline at end of file
...@@ -100,6 +100,7 @@ public class SysLoginService { ...@@ -100,6 +100,7 @@ public class SysLoginService {
String defaultTenantId = RedisUtils.getCacheObject(GlobalConstants.PHONE_DEFAULT_TENANT + username); String defaultTenantId = RedisUtils.getCacheObject(GlobalConstants.PHONE_DEFAULT_TENANT + username);
log.info("登录用户:{} 获取缓存默认租户:"+tenantId, username); log.info("登录用户:{} 获取缓存默认租户:"+tenantId, username);
if(StrUtil.isNotBlank(defaultTenantId)){ if(StrUtil.isNotBlank(defaultTenantId)){
defaultTenantId= checkDefaultTenant(defaultTenantId,username);
tenantId=defaultTenantId; tenantId=defaultTenantId;
} }
} }
...@@ -189,13 +190,14 @@ public class SysLoginService { ...@@ -189,13 +190,14 @@ public class SysLoginService {
public LoginVo smsLogin(String username, String smsCode) { public LoginVo smsLogin(String username, String smsCode) {
String tenantId=null; String tenantId=null;
// if(ReUtil.isMatch(RegexPool.MOBILE, username)) { if(ReUtil.isMatch(RegexPool.MOBILE, username)) {
// String defaultTenantId = RedisUtils.getCacheObject(GlobalConstants.PHONE_DEFAULT_TENANT + username); String defaultTenantId = RedisUtils.getCacheObject(GlobalConstants.PHONE_DEFAULT_TENANT + username);
// log.info("登录用户:{} 获取缓存默认租户:"+tenantId, username); log.info("登录用户:{} 获取缓存默认租户:"+tenantId, username);
// if(StrUtil.isNotBlank(defaultTenantId)){ if(StrUtil.isNotBlank(defaultTenantId)){
// tenantId=defaultTenantId; defaultTenantId= checkDefaultTenant(defaultTenantId,username);
// } tenantId=defaultTenantId;
// } }
}
//查询手机号绑定的所有用户 //查询手机号绑定的所有用户
if (StrUtil.isEmpty(tenantId)) { if (StrUtil.isEmpty(tenantId)) {
...@@ -231,7 +233,7 @@ public class SysLoginService { ...@@ -231,7 +233,7 @@ public class SysLoginService {
// 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可 // 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可
SysUser user = loadUserByUsername(username); SysUser user = loadUserByUsername(username);
checkLogin(LoginType.PASSWORD, username, () -> !validateSmsCode(username, smsCode)); checkLogin(LoginType.SMS, username, () -> !validateSmsCode(username, smsCode));
// 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了 // 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
LoginUser loginUser = buildLoginUser(user); LoginUser loginUser = buildLoginUser(user);
// 生成token // 生成token
...@@ -501,18 +503,45 @@ public class SysLoginService { ...@@ -501,18 +503,45 @@ public class SysLoginService {
} }
SysTenantVo tenant = sysTenantService.queryByTenantId(tenantId); SysTenantVo tenant = sysTenantService.queryByTenantId(tenantId);
if (ObjectUtil.isNull(tenant)) { if (ObjectUtil.isNull(tenant)) {
log.info("登录租户:{} 不存在.", tenantId); log.info("登录企业:{} 不存在.", tenant.getCompanyName());
throw new TenantException("company.not.exists"); throw new TenantException("company.not.exists");
} else if (TenantStatus.DISABLE.getCode().equals(tenant.getStatus())) { } else if (TenantStatus.DISABLE.getCode().equals(tenant.getStatus())) {
log.info("登录租户:{} 已被停用.", tenantId); log.info("登录企业:{} 已被停用.", tenant.getCompanyName());
throw new TenantException("company.blocked"); throw new TenantException("company.blocked");
} else if (ObjectUtil.isNotNull(tenant.getExpireTime()) } else if (ObjectUtil.isNotNull(tenant.getExpireTime())
&& new Date().after(tenant.getExpireTime())) { && new Date().after(tenant.getExpireTime())) {
log.info("登录租户:{} 已超过有效期.", tenantId); log.info("登录企业:{} 已超过有效期.", tenant.getCompanyName());
throw new TenantException("company.expired"); throw new TenantException("company.expired");
} }
} }
public String checkDefaultTenant(String tenantId,String phoneNumber) {
if (!TenantHelper.isEnable()) {
return null;
}
if (TenantConstants.DEFAULT_TENANT_ID.equals(tenantId)) {
return null;
}
SysTenantVo tenant = sysTenantService.queryByTenantId(tenantId);
if (ObjectUtil.isNull(tenant)) {
log.info("登录企业:{} 不存在.", tenant.getCompanyName());
RedisUtils.deleteObject(GlobalConstants.PHONE_DEFAULT_TENANT + phoneNumber);
return null;
} else if (TenantStatus.DISABLE.getCode().equals(tenant.getStatus())) {
log.info("登录企业:{} 已被停用.", tenant.getCompanyName());
RedisUtils.deleteObject(GlobalConstants.PHONE_DEFAULT_TENANT + phoneNumber);
return null;
} else if (ObjectUtil.isNotNull(tenant.getExpireTime())
&& new Date().after(tenant.getExpireTime())) {
log.info("登录企业:{} 已超过有效期.", tenant.getCompanyName());
RedisUtils.deleteObject(GlobalConstants.PHONE_DEFAULT_TENANT + phoneNumber);
return null;
}
return tenantId;
}
public List<SysTenantVo> tenantListByAccount(String username) { public List<SysTenantVo> tenantListByAccount(String username) {
return TenantHelper.ignore(() -> sysTenantService.selectTenantList(username)); return TenantHelper.ignore(() -> sysTenantService.selectTenantList(username));
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment