From bd8d88e5e984e59a5c895ec1a254e3dbae1f9f21 Mon Sep 17 00:00:00 2001
From: xieb <vip_xiaobin810@163.com>
Date: Tue, 21 Jan 2025 14:55:39 +0800
Subject: [PATCH] 修复

---
 src/main/java/org/springblade/modules/auth/endpoint/BladeTokenEndPoint.java |   23 +++++++++++++++++++++--
 1 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/springblade/modules/auth/endpoint/BladeTokenEndPoint.java b/src/main/java/org/springblade/modules/auth/endpoint/BladeTokenEndPoint.java
index f297393..21075c4 100644
--- a/src/main/java/org/springblade/modules/auth/endpoint/BladeTokenEndPoint.java
+++ b/src/main/java/org/springblade/modules/auth/endpoint/BladeTokenEndPoint.java
@@ -35,10 +35,14 @@
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.support.Kv;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.RandomType;
+import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.core.tool.utils.WebUtil;
+import org.springblade.modules.auth.granter.SmsCodeTokenGranter;
 import org.springblade.modules.auth.provider.ITokenGranter;
 import org.springblade.modules.auth.provider.TokenGranterBuilder;
 import org.springblade.modules.auth.provider.TokenParameter;
+import org.springblade.modules.auth.sms.MobTechSmsSend;
 import org.springblade.modules.auth.utils.TokenUtil;
 import org.springblade.modules.system.entity.UserInfo;
 import org.springframework.web.bind.annotation.*;
@@ -72,6 +76,8 @@
 	public Kv token(@ApiParam(value = "租户ID", required = true) @RequestParam String tenantId,
 					@ApiParam(value = "账号", required = true) @RequestParam(required = false) String username,
 					@ApiParam(value = "密码", required = true) @RequestParam(required = false) String password,
+					@ApiParam(value = "手机号", required = true) @RequestParam(required = false) String phone,
+					@ApiParam(value = "手机验证码", required = true) @RequestParam(required = false) String code,
 					@ApiIgnore @RequestHeader(name = TokenUtil.DEPT_HEADER_KEY, required = false) String deptId,
 					@ApiIgnore @RequestHeader(name = TokenUtil.ROLE_HEADER_KEY, required = false) String roleId) {
 
@@ -89,13 +95,18 @@
 			.set("grantType", grantType)
 			.set("refreshToken", refreshToken)
 			.set("userType", userType)
-			.set("deptId", deptId).set("roleId", roleId);
+			.set("deptId", deptId).set("roleId", roleId)
+			.set("phone", phone)
+			.set("code", code);
 
 		ITokenGranter granter = TokenGranterBuilder.getGranter(grantType);
 		UserInfo userInfo = granter.grant(tokenParameter);
 
 		if (userInfo == null || userInfo.getUser() == null) {
-			return authInfo.set("error_code", HttpServletResponse.SC_BAD_REQUEST).set("error_description", "用户名或密码不正确");
+			if (grantType.equals(SmsCodeTokenGranter.GRANT_TYPE))
+				return authInfo.set("error_code", HttpServletResponse.SC_BAD_REQUEST).set("error_description", "手机号码未绑定账号");
+			else
+				return authInfo.set("error_code", HttpServletResponse.SC_BAD_REQUEST).set("error_description", "用户名或密码不正确");
 		}
 
 		if (Func.isEmpty(userInfo.getRoles())) {
@@ -129,6 +140,14 @@
 		return Kv.create().set("key", key).set("image", specCaptcha.toBase64());
 	}
 
+	@GetMapping("/oauth/smsCode")
+	@ApiOperation(value = "发送短信验证码")
+	public String sms(@ApiParam(value = "手机号", required = true) @RequestParam String phone) {
+		String result = MobTechSmsSend.requestData(phone, StringUtil.random(4, RandomType.INT));
+		// 将key和base64返回给前端
+		return result;
+	}
+
 	@GetMapping("/oauth/clear-cache")
 	@ApiOperation(value = "清除缓存")
 	public Kv clearCache() {

--
Gitblit v1.9.3