|
|
|
@ -6,6 +6,8 @@ import cn.dev33.satoken.stp.StpUtil;
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.dromara.common.core.constant.Constants;
|
|
|
|
|
import org.dromara.common.core.constant.GlobalConstants;
|
|
|
|
|
import org.dromara.common.core.constant.TenantConstants;
|
|
|
|
@ -32,9 +34,6 @@ import org.dromara.system.domain.vo.SysUserVo;
|
|
|
|
|
import org.dromara.system.mapper.SysUserMapper;
|
|
|
|
|
import org.dromara.system.service.ISysPermissionService;
|
|
|
|
|
import org.dromara.system.service.ISysTenantService;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.dromara.common.core.utils.*;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
@ -82,9 +81,10 @@ public class SysLoginService {
|
|
|
|
|
// 校验租户
|
|
|
|
|
checkTenant(tenantId);
|
|
|
|
|
|
|
|
|
|
// 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可
|
|
|
|
|
SysUserVo user = loadUserByUsername(tenantId, username);
|
|
|
|
|
checkLogin(LoginType.PASSWORD, tenantId, username, () -> !BCrypt.checkpw(password, user.getPassword()));
|
|
|
|
|
// 此处可根据登录用户的数据不同 自行创建 loginUser
|
|
|
|
|
// 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
|
|
|
|
|
LoginUser loginUser = buildLoginUser(user);
|
|
|
|
|
// 生成token
|
|
|
|
|
LoginHelper.loginByDevice(loginUser, DeviceType.PC);
|
|
|
|
@ -101,7 +101,7 @@ public class SysLoginService {
|
|
|
|
|
SysUserVo user = loadUserByPhonenumber(tenantId, phonenumber);
|
|
|
|
|
|
|
|
|
|
checkLogin(LoginType.SMS, tenantId, user.getUserName(), () -> !validateSmsCode(tenantId, phonenumber, smsCode));
|
|
|
|
|
// 此处可根据登录用户的数据不同 自行创建 loginUser
|
|
|
|
|
// 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
|
|
|
|
|
LoginUser loginUser = buildLoginUser(user);
|
|
|
|
|
// 生成token
|
|
|
|
|
LoginHelper.loginByDevice(loginUser, DeviceType.APP);
|
|
|
|
@ -114,11 +114,11 @@ public class SysLoginService {
|
|
|
|
|
public String emailLogin(String tenantId, String email, String emailCode) {
|
|
|
|
|
// 校验租户
|
|
|
|
|
checkTenant(tenantId);
|
|
|
|
|
// 通过手机号查找用户
|
|
|
|
|
// 通过邮箱查找用户
|
|
|
|
|
SysUserVo user = loadUserByEmail(tenantId, email);
|
|
|
|
|
|
|
|
|
|
checkLogin(LoginType.EMAIL, tenantId, user.getUserName(), () -> !validateEmailCode(tenantId, email, emailCode));
|
|
|
|
|
// 此处可根据登录用户的数据不同 自行创建 loginUser
|
|
|
|
|
// 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
|
|
|
|
|
LoginUser loginUser = buildLoginUser(user);
|
|
|
|
|
// 生成token
|
|
|
|
|
LoginHelper.loginByDevice(loginUser, DeviceType.APP);
|
|
|
|
@ -134,11 +134,12 @@ public class SysLoginService {
|
|
|
|
|
// todo 以下自行实现
|
|
|
|
|
// 校验 appid + appsrcret + xcxCode 调用登录凭证校验接口 获取 session_key 与 openid
|
|
|
|
|
String openid = "";
|
|
|
|
|
// 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可
|
|
|
|
|
SysUserVo user = loadUserByOpenid(openid);
|
|
|
|
|
// 校验租户
|
|
|
|
|
checkTenant(user.getTenantId());
|
|
|
|
|
|
|
|
|
|
// 此处可根据登录用户的数据不同 自行创建 loginUser
|
|
|
|
|
// 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
|
|
|
|
|
XcxLoginUser loginUser = new XcxLoginUser();
|
|
|
|
|
loginUser.setTenantId(user.getTenantId());
|
|
|
|
|
loginUser.setUserId(user.getUserId());
|
|
|
|
|