| | |
| | | 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; |
| | |
| | | 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; |
| | | |
| | |
| | | // 校验租户 |
| | | 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); |
| | |
| | | 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); |
| | |
| | | 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); |
| | |
| | | // 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()); |