From edfdfacb2dfdf461920a8cb2490ee398ff012c72 Mon Sep 17 00:00:00 2001 From: Andrey Shabarshov Date: Fri, 4 Feb 2022 17:32:40 +0000 Subject: [PATCH] Logging fixed. The connectivity between Android application and API Server fixed. --- QRBee/QRBee.Android/Services/LocalSettings.cs | 2 +- QRBee/QRBee/Services/ILocalSettings.cs | 3 +- QRBee/QRBee/ViewModels/RegisterViewModel.cs | 35 ++++++++++++++++--- QRBeeApi/Controllers/QRBeeController.cs | 2 +- QRBeeApi/Program.cs | 1 + QRBeeApi/Services/QRBeeAPI.cs | 5 +-- QRBeeApi/appsettings.json | 4 +-- QRBeeApi/log4net.config | 23 +++++++++--- 8 files changed, 59 insertions(+), 16 deletions(-) diff --git a/QRBee/QRBee.Android/Services/LocalSettings.cs b/QRBee/QRBee.Android/Services/LocalSettings.cs index 4068d77..cd1ab12 100644 --- a/QRBee/QRBee.Android/Services/LocalSettings.cs +++ b/QRBee/QRBee.Android/Services/LocalSettings.cs @@ -9,7 +9,7 @@ namespace QRBee.Droid.Services { internal class LocalSettings : ILocalSettings { - public string QRBeeApiUrl => "https://192.169.0.12:5000"; + public string QRBeeApiUrl => "https://10.0.2.2:7000"; public async Task SaveSettings(Settings settings) { diff --git a/QRBee/QRBee/Services/ILocalSettings.cs b/QRBee/QRBee/Services/ILocalSettings.cs index 46dffb6..37ead0c 100644 --- a/QRBee/QRBee/Services/ILocalSettings.cs +++ b/QRBee/QRBee/Services/ILocalSettings.cs @@ -7,12 +7,13 @@ namespace QRBee.Services { public class Settings { + //TODO add ClientId public string PIN { get; set; } public bool IsRegistered { get; set; } public string Name { get; set; } public string Email { get; set; } - public string DateOfBirth { get; set; } + public DateTime DateOfBirth { get; set; } public string CardNumber { get; set; } public string ValidFrom { get; set; } public string ExpirationDate { get; set; } diff --git a/QRBee/QRBee/ViewModels/RegisterViewModel.cs b/QRBee/QRBee/ViewModels/RegisterViewModel.cs index 49a0e86..9306630 100644 --- a/QRBee/QRBee/ViewModels/RegisterViewModel.cs +++ b/QRBee/QRBee/ViewModels/RegisterViewModel.cs @@ -1,6 +1,7 @@ using System; using System.Linq; using System.Net.Http; +using System.Text.RegularExpressions; using QRBee.Core; using QRBee.Core.Data; using QRBee.Services; @@ -38,7 +39,7 @@ namespace QRBee.ViewModels public string Name { get; set; } public string Email { get; set; } - public string DateOfBirth { get; set; } + public DateTime DateOfBirth { get; set; } public string CardNumber { get; set; } public string ValidFrom { get; set; } public string ExpirationDate { get; set; } @@ -58,12 +59,23 @@ namespace QRBee.ViewModels return; _password1 = value; - Password1Color = (string.IsNullOrWhiteSpace(_password1) || _password1.Length < 8 ) ? Color.Red : Color.Green; + Password1Color = (CheckPassword(_password1)) ? Color.Green : Color.Red; OnPropertyChanged(nameof(Password1)); OnPropertyChanged(nameof(Password1Color)); } } + private static bool CheckPassword(string password) + { + if (string.IsNullOrWhiteSpace(password) || password.Length < 7) + { + return false; + } + + return Regex.IsMatch(password, "(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])"); + //return string.IsNullOrWhiteSpace(password) || password.Length<8 && Regex.IsMatch(password, "[a-zA-Z0-9]"); + } + public string Password2 { get => _password2; @@ -82,13 +94,14 @@ namespace QRBee.ViewModels private async void OnRegisterClicked(object obj) { - using var client = new HttpClient(); + using var client = new HttpClient(GetInsecureHandler()); var localSettings = DependencyService.Resolve(); var service = new Core.Client.Client(localSettings.QRBeeApiUrl,client); try { + //TODO Check if ClientId already in LocalSettings. If Yes update data in database //save local settings var settings = new Settings @@ -109,7 +122,7 @@ namespace QRBee.ViewModels await service.RegisterAsync(new RegistrationRequest { - DateOfBirth = DateOfBirth, + DateOfBirth = DateOfBirth.ToString("yyyy-MM-dd"), Email = Email, Name = Name, RegisterAsMerchant = false @@ -128,5 +141,19 @@ namespace QRBee.ViewModels } } + // This method must be in a class in a platform project, even if + // the HttpClient object is constructed in a shared project. + public HttpClientHandler GetInsecureHandler() + { + var handler = new HttpClientHandler(); + handler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => + { + if (cert.Issuer.Equals("CN=localhost")) + return true; + return errors == System.Net.Security.SslPolicyErrors.None; + }; + return handler; + } + } } diff --git a/QRBeeApi/Controllers/QRBeeController.cs b/QRBeeApi/Controllers/QRBeeController.cs index a9f30e7..0ca1031 100644 --- a/QRBeeApi/Controllers/QRBeeController.cs +++ b/QRBeeApi/Controllers/QRBeeController.cs @@ -23,7 +23,7 @@ namespace QRBee.Api.Controllers [HttpPost("Register")] public Task Register([FromBody] RegistrationRequest value) { - _logger.LogDebug($"Trying to register user {value.Name}"); + _logger.LogInformation($"Trying to register user {value.Name}"); return _service.Register(value); } diff --git a/QRBeeApi/Program.cs b/QRBeeApi/Program.cs index fbd52c1..65ccb31 100644 --- a/QRBeeApi/Program.cs +++ b/QRBeeApi/Program.cs @@ -12,6 +12,7 @@ builder.Host.ConfigureLogging(logging => { logging.ClearProviders(); GlobalContext.Properties["LOGS_ROOT"] = Environment.GetEnvironmentVariable("LOGS_ROOT") ?? ""; + System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance); logging.AddLog4Net("log4net.config"); }); diff --git a/QRBeeApi/Services/QRBeeAPI.cs b/QRBeeApi/Services/QRBeeAPI.cs index c44e00b..492f896 100644 --- a/QRBeeApi/Services/QRBeeAPI.cs +++ b/QRBeeApi/Services/QRBeeAPI.cs @@ -26,12 +26,13 @@ namespace QRBee.Api.Services Validate(request); var info = Convert(request); - + //TODO Check that user doesn't exist(name,surname,dateOfBirth or Telephone number(get from Android)) + var clientId = await _storage.PutUserInfo(info); return new RegistrationResponse{ClientId = clientId}; } - + //TODO Write an UpdateUser command private static void Validate(RegistrationRequest request) { if (request == null) diff --git a/QRBeeApi/appsettings.json b/QRBeeApi/appsettings.json index ed89d62..c68d937 100644 --- a/QRBeeApi/appsettings.json +++ b/QRBeeApi/appsettings.json @@ -7,8 +7,8 @@ "Logging": { "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" + "Default": "Trace" + //"Microsoft.AspNetCore": "Debug" } }, "AllowedHosts": "*" diff --git a/QRBeeApi/log4net.config b/QRBeeApi/log4net.config index fd10972..f12bd9c 100644 --- a/QRBeeApi/log4net.config +++ b/QRBeeApi/log4net.config @@ -6,10 +6,18 @@ - + + + + + + + + + + - - + @@ -25,10 +33,15 @@ - - + + + + + + +