diff --git a/src/Infrastructure/BotSharp.Abstraction/Repositories/IBotSharpRepository.cs b/src/Infrastructure/BotSharp.Abstraction/Repositories/IBotSharpRepository.cs index 9282506d..fb3fb187 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Repositories/IBotSharpRepository.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Repositories/IBotSharpRepository.cs @@ -18,8 +18,7 @@ public interface IBotSharpRepository : IHaveServiceProvider #region User User? GetUserByEmail(string email) => throw new NotImplementedException(); - User? GetUserByPhone(string phone, string regionCode = "CN") => throw new NotImplementedException(); - User? GetAdminUserByPhone(string phone, string regionCode = "CN") => throw new NotImplementedException(); + User? GetUserByPhone(string phone, string role = null, string regionCode = "CN") => throw new NotImplementedException(); User? GetAffiliateUserByPhone(string phone) => throw new NotImplementedException(); User? GetUserById(string id) => throw new NotImplementedException(); List GetUserByIds(List ids) => throw new NotImplementedException(); diff --git a/src/Infrastructure/BotSharp.Abstraction/Utilities/Pagination.cs b/src/Infrastructure/BotSharp.Abstraction/Utilities/Pagination.cs index 8d6d0e0d..8e5c7f23 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Utilities/Pagination.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Utilities/Pagination.cs @@ -8,9 +8,9 @@ public class Pagination : ICacheKey private int _size; public int Page - { + { get { return _page > 0 ? _page : 1; } - set { _page = value; } + set { _page = value; } } public int Size @@ -43,7 +43,7 @@ public class Pagination : ICacheKey public bool ReturnTotal { get; set; } = true; public string GetCacheKey() - => $"{nameof(Pagination)}_{_page}_{_size}_{Sort}_{Order}"; + => $"{nameof(Pagination)}_{_page}_{_size}_{Sort}_{Order}_{Offset}_{ReturnTotal}"; } public class PagedItems diff --git a/src/Infrastructure/BotSharp.Core/Users/Services/UserService.cs b/src/Infrastructure/BotSharp.Core/Users/Services/UserService.cs index ba97bae8..d152cad4 100644 --- a/src/Infrastructure/BotSharp.Core/Users/Services/UserService.cs +++ b/src/Infrastructure/BotSharp.Core/Users/Services/UserService.cs @@ -172,7 +172,7 @@ public class UserService : IUserService var base64 = Encoding.UTF8.GetString(Convert.FromBase64String(authorization)); var (id, password) = base64.SplitAsTuple(":"); var db = _services.GetRequiredService(); - var record = db.GetAdminUserByPhone(id); + var record = db.GetUserByPhone(id,"admin"); var isCanLogin = record != null && !record.IsDisabled && record.Type == UserType.Internal && new List { diff --git a/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.User.cs b/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.User.cs index bfaecbf5..01ed871e 100644 --- a/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.User.cs +++ b/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.User.cs @@ -13,7 +13,7 @@ public partial class MongoRepository return user != null ? user.ToUser() : null; } - public User? GetUserByPhone(string phone, string regionCode = "CN") + public User? GetUserByPhone(string phone, string role = null, string regionCode = "CN") { if (string.IsNullOrWhiteSpace(phone)) { @@ -23,21 +23,8 @@ public partial class MongoRepository string phoneSecond = phone.StartsWith("+86") ? phone.Replace("+86", "") : $"+86{phone}"; var user = _dc.Users.AsQueryable().FirstOrDefault(x => (x.Phone == phone || x.Phone == phoneSecond) && x.Type != UserType.Affiliate - && (x.RegionCode == regionCode || string.IsNullOrWhiteSpace(x.RegionCode))); - return user != null ? user.ToUser() : null; - } - - public User? GetAdminUserByPhone(string phone, string regionCode = "CN") - { - if (string.IsNullOrWhiteSpace(phone)) - { - return null; - } - - string phoneSecond = phone.StartsWith("+86") ? phone.Replace("+86", "") : $"+86{phone}"; - - var user = _dc.Users.AsQueryable().FirstOrDefault(x => (x.Phone == phone || x.Phone == phoneSecond) && x.Type != UserType.Affiliate - && (x.RegionCode == regionCode || string.IsNullOrWhiteSpace(x.RegionCode)) && (x.Role == "admin" || x.Role == "root")); + && (x.RegionCode == regionCode || string.IsNullOrWhiteSpace(x.RegionCode)) + && (role == "admin" ? x.Role == "admin" || x.Role == "root" : true)); return user != null ? user.ToUser() : null; }