From 65ffe84ca01dd96d76f48c18add08ff9b9617629 Mon Sep 17 00:00:00 2001 From: AnonymousDotNet <18776095145@163.com> Date: Wed, 27 Nov 2024 17:23:20 +0800 Subject: [PATCH 1/3] fix: update SplitAsTuple --- .../BotSharp.Core/Infrastructures/Utilities.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Infrastructure/BotSharp.Core/Infrastructures/Utilities.cs b/src/Infrastructure/BotSharp.Core/Infrastructures/Utilities.cs index 613643f4e..db5a9a7d4 100644 --- a/src/Infrastructure/BotSharp.Core/Infrastructures/Utilities.cs +++ b/src/Infrastructure/BotSharp.Core/Infrastructures/Utilities.cs @@ -30,10 +30,16 @@ public static string HashTextSha256(string text) return sb.ToString(); } - public static (string, string) SplitAsTuple(this string str, string sep) + public static (string, string, string) SplitAsTuple(this string str, string sep) { var splits = str.Split(sep); - return (splits[0], splits[1]); + + if (splits.Length == 2 || string.IsNullOrWhiteSpace(splits[2])) + { + return (splits[0], splits[1], "CN"); + } + + return (splits[0], splits[1], splits[2]); } /// From fcc08859dcdc255b7766010668283e5f9bcb1a6b Mon Sep 17 00:00:00 2001 From: AnonymousDotNet <18776095145@163.com> Date: Wed, 27 Nov 2024 17:26:21 +0800 Subject: [PATCH 2/3] fix: receive regionCode --- .../BotSharp.Core/Users/Services/UserService.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Infrastructure/BotSharp.Core/Users/Services/UserService.cs b/src/Infrastructure/BotSharp.Core/Users/Services/UserService.cs index 647ed59c8..1938302f7 100644 --- a/src/Infrastructure/BotSharp.Core/Users/Services/UserService.cs +++ b/src/Infrastructure/BotSharp.Core/Users/Services/UserService.cs @@ -148,7 +148,7 @@ public async Task UpdatePassword(string password, string verificationCode) public async Task GetAffiliateToken(string authorization) { var base64 = Encoding.UTF8.GetString(Convert.FromBase64String(authorization)); - var (id, password) = base64.SplitAsTuple(":"); + var (id, password, regionCode) = base64.SplitAsTuple(":"); var db = _services.GetRequiredService(); var record = db.GetAffiliateUserByPhone(id); var isCanLogin = record != null && !record.IsDisabled && record.Type == UserType.Affiliate; @@ -170,7 +170,7 @@ public async Task UpdatePassword(string password, string verificationCode) public async Task GetAdminToken(string authorization) { var base64 = Encoding.UTF8.GetString(Convert.FromBase64String(authorization)); - var (id, password) = base64.SplitAsTuple(":"); + var (id, password, regionCode) = base64.SplitAsTuple(":"); var db = _services.GetRequiredService(); var record = db.GetUserByPhone(id, type: UserType.Internal); var isCanLogin = record != null && !record.IsDisabled @@ -210,13 +210,13 @@ public async Task UpdatePassword(string password, string verificationCode) public async Task GetToken(string authorization) { var base64 = Encoding.UTF8.GetString(Convert.FromBase64String(authorization)); - var (id, password) = base64.SplitAsTuple(":"); + var (id, password, regionCode) = base64.SplitAsTuple(":"); var db = _services.GetRequiredService(); var record = id.Contains("@") ? db.GetUserByEmail(id) : db.GetUserByUserName(id); if (record == null) { - record = db.GetUserByPhone(id); + record = db.GetUserByPhone(id, regionCode: regionCode); } if (record != null && record.Type == UserType.Affiliate) From ae2049c53edb206fad30840c83cc915e12bc0d10 Mon Sep 17 00:00:00 2001 From: AnonymousDotNet <18776095145@163.com> Date: Wed, 27 Nov 2024 17:27:32 +0800 Subject: [PATCH 3/3] fix: update GetUserByPhone --- .../Repository/MongoRepository.User.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.User.cs b/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.User.cs index 8a3810698..c2792b23c 100644 --- a/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.User.cs +++ b/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.User.cs @@ -22,7 +22,14 @@ public partial class MongoRepository return null; } - phoneSecond = phone.StartsWith("+86") ? phone.Replace("+86", "") : $"+86{phone}"; + if (regionCode == "CN") + { + phoneSecond = (phone ?? "").StartsWith("+86") ? (phone ?? "").Replace("+86", "") : ($"+86{phone ?? ""}"); + } + else + { + phoneSecond = (phone ?? "").Substring(regionCode == "US" ? 2 : 3); + } var user = _dc.Users.AsQueryable().FirstOrDefault(x => (x.Phone == phone || x.Phone == phoneSecond) && (x.RegionCode == regionCode || string.IsNullOrWhiteSpace(x.RegionCode))