support sms login
This commit is contained in:
@@ -5,6 +5,8 @@ import com.imyeyu.api.annotation.RequireCorePermission;
|
||||
import com.imyeyu.api.bean.CorePermissionCode;
|
||||
import com.imyeyu.api.modules.common.entity.Attachment;
|
||||
import com.imyeyu.api.modules.common.service.AttachmentService;
|
||||
import com.imyeyu.api.modules.common.service.SmsService;
|
||||
import com.imyeyu.api.modules.common.vo.SmsCaptchaVerifyRequest;
|
||||
import com.imyeyu.api.modules.user.entity.User;
|
||||
import com.imyeyu.api.modules.user.service.UserLoginService;
|
||||
import com.imyeyu.api.modules.user.service.UserService;
|
||||
@@ -50,6 +52,7 @@ import java.util.List;
|
||||
@RequestMapping("/user")
|
||||
public class UserController {
|
||||
|
||||
private final SmsService smsService;
|
||||
private final UserService userService;
|
||||
private final UserLoginService userLoginService;
|
||||
private final AttachmentService attachmentService;
|
||||
@@ -133,6 +136,15 @@ public class UserController {
|
||||
return userLoginService.login(TimiSpring.getToken(), userLoginService.getRequireLoginUserId());
|
||||
}
|
||||
|
||||
@AOPLog
|
||||
@JsonView(ResponseView.Public.class)
|
||||
@RequestRateLimit
|
||||
@CaptchaValid
|
||||
@PostMapping("/login/sms")
|
||||
public LoginResponse loginBySms(@RequestBody SmsCaptchaVerifyRequest request) {
|
||||
return userLoginService.loginBySms(request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新当前用户资料
|
||||
*
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.imyeyu.api.modules.user.service;
|
||||
|
||||
import com.e2ins.ms.notify.vo.sms.CaptchaVerifyReq;
|
||||
import com.imyeyu.api.modules.common.vo.SmsCaptchaVerifyRequest;
|
||||
import com.imyeyu.api.modules.user.entity.User;
|
||||
import com.imyeyu.api.modules.user.vo.LoginRequest;
|
||||
import com.imyeyu.api.modules.user.vo.LoginResponse;
|
||||
@@ -24,7 +24,7 @@ public interface UserLoginService {
|
||||
|
||||
LoginResponse login(String token, String userId);
|
||||
|
||||
LoginResponse loginBySms(CaptchaVerifyReq req);
|
||||
LoginResponse loginBySms(SmsCaptchaVerifyRequest request);
|
||||
|
||||
/**
|
||||
* 根据令牌获取用户
|
||||
|
||||
+12
-19
@@ -1,13 +1,13 @@
|
||||
package com.imyeyu.api.modules.user.service.implement;
|
||||
|
||||
import com.e2ins.ms.notify.SmsNotifyService;
|
||||
import com.e2ins.ms.notify.bean.NotifyDetail;
|
||||
import com.e2ins.ms.notify.vo.sms.CaptchaVerifyReq;
|
||||
import com.imyeyu.api.config.dbsource.TimiServerDBConfig;
|
||||
import com.imyeyu.api.modules.common.entity.Attachment;
|
||||
import com.imyeyu.api.modules.common.entity.NotifyDetail;
|
||||
import com.imyeyu.api.modules.common.entity.Setting;
|
||||
import com.imyeyu.api.modules.common.service.AttachmentService;
|
||||
import com.imyeyu.api.modules.common.service.SettingService;
|
||||
import com.imyeyu.api.modules.common.service.SmsService;
|
||||
import com.imyeyu.api.modules.common.vo.SmsCaptchaVerifyRequest;
|
||||
import com.imyeyu.api.modules.user.bean.BootstrapData;
|
||||
import com.imyeyu.api.modules.user.entity.User;
|
||||
import com.imyeyu.api.modules.user.service.UserLoginService;
|
||||
@@ -16,7 +16,6 @@ import com.imyeyu.api.modules.user.service.UserService;
|
||||
import com.imyeyu.api.modules.user.vo.LoginRequest;
|
||||
import com.imyeyu.api.modules.user.vo.LoginResponse;
|
||||
import com.imyeyu.java.TimiJava;
|
||||
import com.imyeyu.java.bean.timi.TimiCode;
|
||||
import com.imyeyu.java.bean.timi.TimiException;
|
||||
import com.imyeyu.spring.TimiSpring;
|
||||
import com.imyeyu.spring.util.Redis;
|
||||
@@ -30,7 +29,6 @@ import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
@@ -47,10 +45,10 @@ public class UserLoginServiceImplement implements UserLoginService, TimiJava {
|
||||
private static final String PHONE_VERIFY_KEY_PREFIX = "USER:PHONE:VERIFY:";
|
||||
private static final long PHONE_VERIFY_CODE_TTL = Time.M * 5;
|
||||
|
||||
private final SmsService smsService;
|
||||
private final UserService userService;
|
||||
private final SettingService settingService;
|
||||
private final UserRoleService userRoleService;
|
||||
private final SmsNotifyService smsNotifyService;
|
||||
private final AttachmentService attachmentService;
|
||||
|
||||
private final Redis<String, String> redisUserToken;
|
||||
@@ -104,20 +102,15 @@ public class UserLoginServiceImplement implements UserLoginService, TimiJava {
|
||||
|
||||
|
||||
@Override
|
||||
public LoginResponse loginBySms(CaptchaVerifyReq req) {
|
||||
try {
|
||||
NotifyDetail detail = smsNotifyService.captchaVerify(req);
|
||||
// 无报错即成功
|
||||
User user = userService.getByPhoneNo(detail.getSendTo());
|
||||
if (!user.isValidPhone()) {
|
||||
user.setPhoneNoVerifyAt(Time.now());
|
||||
userService.update(user);
|
||||
}
|
||||
return login(UUID.randomUUID().toString(), user.getId());
|
||||
} catch (IOException e) {
|
||||
log.error("login by sms error", e);
|
||||
throw new TimiException(TimiCode.ERROR, "验证短信失败");
|
||||
public LoginResponse loginBySms(SmsCaptchaVerifyRequest request) {
|
||||
NotifyDetail detail = smsService.captchaVerify(request.getDetailId(), request.getCaptcha());
|
||||
// 无报错即成功
|
||||
User user = userService.getByPhoneNo(detail.getSendTo());
|
||||
if (!user.isValidPhone()) {
|
||||
user.setPhoneNoVerifyAt(Time.now());
|
||||
userService.update(user);
|
||||
}
|
||||
return login(UUID.randomUUID().toString(), user.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user