Logging fixed. The connectivity between Android application and API Server fixed.

This commit is contained in:
Andrey Shabarshov 2022-02-04 17:32:40 +00:00
parent 55428f92f3
commit edfdfacb2d
8 changed files with 59 additions and 16 deletions

View File

@ -9,7 +9,7 @@ namespace QRBee.Droid.Services
{ {
internal class LocalSettings : ILocalSettings 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) public async Task SaveSettings(Settings settings)
{ {

View File

@ -7,12 +7,13 @@ namespace QRBee.Services
{ {
public class Settings public class Settings
{ {
//TODO add ClientId
public string PIN { get; set; } public string PIN { get; set; }
public bool IsRegistered { get; set; } public bool IsRegistered { get; set; }
public string Name { get; set; } public string Name { get; set; }
public string Email { get; set; } public string Email { get; set; }
public string DateOfBirth { get; set; } public DateTime DateOfBirth { get; set; }
public string CardNumber { get; set; } public string CardNumber { get; set; }
public string ValidFrom { get; set; } public string ValidFrom { get; set; }
public string ExpirationDate { get; set; } public string ExpirationDate { get; set; }

View File

@ -1,6 +1,7 @@
using System; using System;
using System.Linq; using System.Linq;
using System.Net.Http; using System.Net.Http;
using System.Text.RegularExpressions;
using QRBee.Core; using QRBee.Core;
using QRBee.Core.Data; using QRBee.Core.Data;
using QRBee.Services; using QRBee.Services;
@ -38,7 +39,7 @@ namespace QRBee.ViewModels
public string Name { get; set; } public string Name { get; set; }
public string Email { get; set; } public string Email { get; set; }
public string DateOfBirth { get; set; } public DateTime DateOfBirth { get; set; }
public string CardNumber { get; set; } public string CardNumber { get; set; }
public string ValidFrom { get; set; } public string ValidFrom { get; set; }
public string ExpirationDate { get; set; } public string ExpirationDate { get; set; }
@ -58,12 +59,23 @@ namespace QRBee.ViewModels
return; return;
_password1 = value; _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(Password1));
OnPropertyChanged(nameof(Password1Color)); 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 public string Password2
{ {
get => _password2; get => _password2;
@ -82,13 +94,14 @@ namespace QRBee.ViewModels
private async void OnRegisterClicked(object obj) private async void OnRegisterClicked(object obj)
{ {
using var client = new HttpClient(); using var client = new HttpClient(GetInsecureHandler());
var localSettings = DependencyService.Resolve<ILocalSettings>(); var localSettings = DependencyService.Resolve<ILocalSettings>();
var service = new Core.Client.Client(localSettings.QRBeeApiUrl,client); var service = new Core.Client.Client(localSettings.QRBeeApiUrl,client);
try try
{ {
//TODO Check if ClientId already in LocalSettings. If Yes update data in database
//save local settings //save local settings
var settings = new Settings var settings = new Settings
@ -109,7 +122,7 @@ namespace QRBee.ViewModels
await service.RegisterAsync(new RegistrationRequest await service.RegisterAsync(new RegistrationRequest
{ {
DateOfBirth = DateOfBirth, DateOfBirth = DateOfBirth.ToString("yyyy-MM-dd"),
Email = Email, Email = Email,
Name = Name, Name = Name,
RegisterAsMerchant = false 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;
}
} }
} }

View File

@ -23,7 +23,7 @@ namespace QRBee.Api.Controllers
[HttpPost("Register")] [HttpPost("Register")]
public Task<RegistrationResponse> Register([FromBody] RegistrationRequest value) public Task<RegistrationResponse> Register([FromBody] RegistrationRequest value)
{ {
_logger.LogDebug($"Trying to register user {value.Name}"); _logger.LogInformation($"Trying to register user {value.Name}");
return _service.Register(value); return _service.Register(value);
} }

View File

@ -12,6 +12,7 @@ builder.Host.ConfigureLogging(logging =>
{ {
logging.ClearProviders(); logging.ClearProviders();
GlobalContext.Properties["LOGS_ROOT"] = Environment.GetEnvironmentVariable("LOGS_ROOT") ?? ""; GlobalContext.Properties["LOGS_ROOT"] = Environment.GetEnvironmentVariable("LOGS_ROOT") ?? "";
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
logging.AddLog4Net("log4net.config"); logging.AddLog4Net("log4net.config");
}); });

View File

@ -26,12 +26,13 @@ namespace QRBee.Api.Services
Validate(request); Validate(request);
var info = Convert(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); var clientId = await _storage.PutUserInfo(info);
return new RegistrationResponse{ClientId = clientId}; return new RegistrationResponse{ClientId = clientId};
} }
//TODO Write an UpdateUser command
private static void Validate(RegistrationRequest request) private static void Validate(RegistrationRequest request)
{ {
if (request == null) if (request == null)

View File

@ -7,8 +7,8 @@
"Logging": { "Logging": {
"LogLevel": { "LogLevel": {
"Default": "Information", "Default": "Trace"
"Microsoft.AspNetCore": "Warning" //"Microsoft.AspNetCore": "Debug"
} }
}, },
"AllowedHosts": "*" "AllowedHosts": "*"

View File

@ -6,10 +6,18 @@
</layout> </layout>
</appender> </appender>
<appender name="Console" type="log4net.Appender.ConsoleAppender"> <appender name="Console" type="log4net.Appender.ColoredConsoleAppender">
<mapping>
<level value="ERROR" />
<foreColor value="White" />
<backColor value="Red, HighIntensity" />
</mapping>
<mapping>
<level value="DEBUG" />
<foreColor value="White" />
</mapping>
<layout type="log4net.Layout.PatternLayout"> <layout type="log4net.Layout.PatternLayout">
<!-- Pattern to output the caller's file name and line number --> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
<conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
</layout> </layout>
</appender> </appender>
@ -25,10 +33,15 @@
</layout> </layout>
</appender> </appender>
<root> <appender name="BufferingForwardingAppender" type="log4net.Appender.BufferingForwardingAppender" >
<level value="ALL"/> <bufferSize value="1"/>
<appender-ref ref="DebugAppender" /> <appender-ref ref="DebugAppender" />
<appender-ref ref="Console" /> <appender-ref ref="Console" />
<appender-ref ref="RollingFile" /> <appender-ref ref="RollingFile" />
</appender>
<root>
<level value="ALL"/>
<appender-ref ref="BufferingForwardingAppender" />
</root> </root>
</log4net> </log4net>