hdong:clean up for client,user and admin split logic.

This commit is contained in:
YouWeiDH 2024-11-21 20:54:24 +08:00
parent 93a4bd95a9
commit 0078b97868
4 changed files with 8 additions and 8 deletions

View file

@ -26,7 +26,7 @@ public interface IBotSharpRepository : IHaveServiceProvider
#region User
User? GetUserByEmail(string email) => throw new NotImplementedException();
User? GetUserByPhone(string phone, string role = null, string regionCode = "CN") => throw new NotImplementedException();
User? GetUserByPhone(string phone, string type = "client", string regionCode = "CN") => throw new NotImplementedException();
User? GetAffiliateUserByPhone(string phone) => throw new NotImplementedException();
User? GetUserById(string id) => throw new NotImplementedException();
List<User> GetUserByIds(List<string> ids) => throw new NotImplementedException();

View file

@ -11,13 +11,13 @@ public partial class FileRepository
return Users.FirstOrDefault(x => x.Email == email.ToLower());
}
public User? GetUserByPhone(string phone, string? role = null, string regionCode = "CN")
public User? GetUserByPhone(string phone, string? type = "client", string regionCode = "CN")
{
var query = Users.Where(x => x.Phone == phone);
if (!string.IsNullOrEmpty(role))
if (!string.IsNullOrEmpty(type))
{
query = query.Where(x => x.Role == role);
query = query.Where(x => x.Type == type);
}
if (!string.IsNullOrEmpty(regionCode))

View file

@ -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<IBotSharpRepository>();
var record = db.GetUserByPhone(id, role: "admin");
var record = db.GetUserByPhone(id, type: "internal");
var isCanLogin = record != null && !record.IsDisabled
&& record.Type == UserType.Internal && new List<string>
{

View file

@ -13,7 +13,7 @@ public partial class MongoRepository
return user != null ? user.ToUser() : null;
}
public User? GetUserByPhone(string phone, string role = "client", string regionCode = "CN")
public User? GetUserByPhone(string phone, string type = "client", string regionCode = "CN")
{
string phoneSecond = string.Empty;
// if phone number length is less than 4, return null
@ -24,9 +24,9 @@ public partial class MongoRepository
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
var user = _dc.Users.AsQueryable().FirstOrDefault(x => (x.Phone == phone || x.Phone == phoneSecond)
&& (x.RegionCode == regionCode || string.IsNullOrWhiteSpace(x.RegionCode))
&& (role == "client" ? x.Role == "client" || x.Role == "user" : role == "admin" ? x.Role == "admin" || x.Role == "root" : true));
&& (x.Type == type));
return user != null ? user.ToUser() : null;
}