diff --git a/src/Infrastructure/BotSharp.Abstraction/Users/Models/User.cs b/src/Infrastructure/BotSharp.Abstraction/Users/Models/User.cs index 4e6ca265..689cba9f 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Users/Models/User.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Users/Models/User.cs @@ -7,8 +7,9 @@ public class User public string Id { get; set; } = string.Empty; public string UserName { get; set; } = string.Empty; public string FirstName { get; set; } = string.Empty; - public string LastName { get; set; } = string.Empty; - public string Email { get; set; } = string.Empty; + public string? LastName { get; set; } + public string? Email { get; set; } + public string? Phone { get; set; } public string Salt { get; set; } = string.Empty; public string Password { get; set; } = string.Empty; public string Source { get; set; } = "internal"; diff --git a/src/Infrastructure/BotSharp.Core/Users/Services/UserService.cs b/src/Infrastructure/BotSharp.Core/Users/Services/UserService.cs index c1ee7920..11ee1a6d 100644 --- a/src/Infrastructure/BotSharp.Core/Users/Services/UserService.cs +++ b/src/Infrastructure/BotSharp.Core/Users/Services/UserService.cs @@ -6,6 +6,7 @@ using Microsoft.IdentityModel.Tokens; using NanoidDotNet; using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; +using System.Text.RegularExpressions; namespace BotSharp.Core.Users.Services; @@ -55,6 +56,10 @@ public class UserService : IUserService record = user; record.Email = user.Email?.ToLower(); + if (user.Phone != null) + { + record.Phone = "+" + Regex.Match(user.Phone, @"\d+").Value; + } record.Salt = Guid.NewGuid().ToString("N"); record.Password = Utilities.HashText(user.Password, record.Salt); diff --git a/src/Infrastructure/BotSharp.OpenAPI/ViewModels/Users/UserCreationModel.cs b/src/Infrastructure/BotSharp.OpenAPI/ViewModels/Users/UserCreationModel.cs index 21f28396..c31b93d2 100644 --- a/src/Infrastructure/BotSharp.OpenAPI/ViewModels/Users/UserCreationModel.cs +++ b/src/Infrastructure/BotSharp.OpenAPI/ViewModels/Users/UserCreationModel.cs @@ -4,10 +4,11 @@ namespace BotSharp.OpenAPI.ViewModels.Users; public class UserCreationModel { - public string UserName { get; set; } = string.Empty; + public string? UserName { get; set; } public string FirstName { get; set; } = string.Empty; - public string LastName { get; set; } = string.Empty; - public string Email { get; set; } = string.Empty; + public string? LastName { get; set; } + public string? Email { get; set; } + public string? Phone { get; set; } public string Password { get; set; } = string.Empty; public string Role { get; set; } = UserRole.Client; @@ -19,6 +20,7 @@ public class UserCreationModel FirstName = FirstName, LastName = LastName, Email = Email, + Phone = Phone, Password = Password, Role = Role }; diff --git a/src/Infrastructure/BotSharp.OpenAPI/ViewModels/Users/UserViewModel.cs b/src/Infrastructure/BotSharp.OpenAPI/ViewModels/Users/UserViewModel.cs index 8d28cf03..cbd7e723 100644 --- a/src/Infrastructure/BotSharp.OpenAPI/ViewModels/Users/UserViewModel.cs +++ b/src/Infrastructure/BotSharp.OpenAPI/ViewModels/Users/UserViewModel.cs @@ -5,14 +5,15 @@ namespace BotSharp.OpenAPI.ViewModels.Users; public class UserViewModel { - public string Id { get; set; } + public string Id { get; set; } = null!; [JsonPropertyName("user_name")] - public string UserName { get; set; } + public string UserName { get; set; } = null!; [JsonPropertyName("first_name")] - public string FirstName { get; set; } + public string FirstName { get; set; } = null!; [JsonPropertyName("last_name")] - public string LastName { get; set; } - public string Email { get; set; } + public string? LastName { get; set; } + public string? Email { get; set; } + public string? Phone { get; set; } public string Role { get; set; } = UserRole.Client; [JsonPropertyName("full_name")] public string FullName => $"{FirstName} {LastName}".Trim(); @@ -44,6 +45,7 @@ public class UserViewModel FirstName = user.FirstName, LastName = user.LastName, Email = user.Email, + Phone = user.Phone, Role = user.Role, Source = user.Source, ExternalId = user.ExternalId, diff --git a/src/Plugins/BotSharp.Plugin.MongoStorage/Collections/UserDocument.cs b/src/Plugins/BotSharp.Plugin.MongoStorage/Collections/UserDocument.cs index c277b9f3..16dfb959 100644 --- a/src/Plugins/BotSharp.Plugin.MongoStorage/Collections/UserDocument.cs +++ b/src/Plugins/BotSharp.Plugin.MongoStorage/Collections/UserDocument.cs @@ -4,15 +4,16 @@ namespace BotSharp.Plugin.MongoStorage.Collections; public class UserDocument : MongoBase { - public string UserName { get; set; } - public string FirstName { get; set; } - public string LastName { get; set; } - public string Email { get; set; } - public string Salt { get; set; } - public string Password { get; set; } + public string UserName { get; set; } = null!; + public string FirstName { get; set; } = null!; + public string? LastName { get; set; } + public string? Email { get; set; } + public string? Phone { get; set; } + public string Salt { get; set; } = null!; + public string Password { get; set; } = null!; public string Source { get; set; } = "internal"; public string? ExternalId { get; set; } - public string Role { get; set; } + public string Role { get; set; } = null!; public string? VerificationCode { get; set; } public bool Verified { get; set; } public DateTime CreatedTime { get; set; } @@ -27,6 +28,7 @@ public class UserDocument : MongoBase FirstName = FirstName, LastName = LastName, Email = Email, + Phone = Phone, Password = Password, Salt = Salt, Source = Source, diff --git a/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.User.cs b/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.User.cs index 1a5211f4..9a3ce3f4 100644 --- a/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.User.cs +++ b/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.User.cs @@ -37,6 +37,7 @@ public partial class MongoRepository Salt = user.Salt, Password = user.Password, Email = user.Email, + Phone = user.Phone, Source = user.Source, ExternalId = user.ExternalId, Role = user.Role, diff --git a/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.GoToPage.cs b/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.GoToPage.cs index f830bc9f..f809d59a 100644 --- a/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.GoToPage.cs +++ b/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.GoToPage.cs @@ -31,7 +31,8 @@ public partial class PlaywrightWebDriver if (response.Status == 200) { - result.Body = await page.ContentAsync(); + // Disable this due to performance issue, some page is too large + // result.Body = await page.InnerHTMLAsync("body"); result.IsSuccess = true; } else