diff --git a/src/Infrastructure/BotSharp.Abstraction/Users/IUserService.cs b/src/Infrastructure/BotSharp.Abstraction/Users/IUserService.cs index 5a3315b7..421e217b 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Users/IUserService.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Users/IUserService.cs @@ -13,6 +13,7 @@ public interface IUserService Task GetMyProfile(); Task VerifyUserNameExisting(string userName); Task VerifyEmailExisting(string email); + Task VerifyPhoneExisting(string phone); Task SendVerificationCodeResetPasswordNoLogin(User user); Task SendVerificationCodeResetPasswordLogin(); Task ResetUserPassword(User user); diff --git a/src/Infrastructure/BotSharp.Core/Users/Services/UserService.cs b/src/Infrastructure/BotSharp.Core/Users/Services/UserService.cs index 61fdd758..5cd329d5 100644 --- a/src/Infrastructure/BotSharp.Core/Users/Services/UserService.cs +++ b/src/Infrastructure/BotSharp.Core/Users/Services/UserService.cs @@ -45,7 +45,19 @@ public class UserService : IUserService } var db = _services.GetRequiredService(); - var record = db.GetUserByUserName(user.UserName); + + + var record = db.GetUserByPhone(user.Phone); + + if (record == null) + { + record = db.GetUserByEmail(user.Email); + } + + if (record == null) + { + record = db.GetUserByUserName(user.UserName); + } if (record != null) { @@ -428,6 +440,23 @@ public class UserService : IUserService return false; } + public async Task VerifyPhoneExisting(string phone) + { + if (string.IsNullOrEmpty(phone)) + { + return true; + } + + var db = _services.GetRequiredService(); + var UserByphone = db.GetUserByPhone(phone); + if (UserByphone != null && UserByphone.Verified) + { + return true; + } + + return false; + } + public async Task SendVerificationCodeResetPasswordNoLogin(User user) { var db = _services.GetRequiredService(); @@ -540,7 +569,8 @@ public class UserService : IUserService var curUser = await GetMyProfile(); var db = _services.GetRequiredService(); var record = db.GetUserById(curUser.Id); - if (record == null) + var existEmail = db.GetUserByEmail(email); + if (record == null || existEmail != null) { return false; } @@ -554,8 +584,9 @@ public class UserService : IUserService var curUser = await GetMyProfile(); var db = _services.GetRequiredService(); var record = db.GetUserById(curUser.Id); + var existPhone = db.GetUserByPhone(phone); - if (record == null) + if (record == null || existPhone != null) { return false; } diff --git a/src/Infrastructure/BotSharp.OpenAPI/Controllers/UserController.cs b/src/Infrastructure/BotSharp.OpenAPI/Controllers/UserController.cs index bf15a33b..67c0f4e3 100644 --- a/src/Infrastructure/BotSharp.OpenAPI/Controllers/UserController.cs +++ b/src/Infrastructure/BotSharp.OpenAPI/Controllers/UserController.cs @@ -109,6 +109,13 @@ public class UserController : ControllerBase return await _userService.VerifyEmailExisting(email); } + [AllowAnonymous] + [HttpGet("/user/phone/existing")] + public async Task VerifyPhoneExisting([FromQuery] string phone) + { + return await _userService.VerifyPhoneExisting(phone); + } + [AllowAnonymous] [HttpPost("/user/verifycode-out")] public async Task SendVerificationCodeResetPassword([FromBody] UserCreationModel user)