From 87240cb77d668ee1cdbcd8844204d1b9c46e7807 Mon Sep 17 00:00:00 2001 From: Loretta Date: Mon, 26 Aug 2024 19:15:28 +0200 Subject: [PATCH] SessionServiceClientBase; improvements, fixes, etc... --- .../Services/SessionServiceMobile.cs | 38 +++-------- .../Services/UserDataServiceMobile.cs | 54 +++++++-------- TIAMSharedUI/Pages/AppLaunchComponent.razor | 9 ++- TIAMSharedUI/Pages/Login.razor.cs | 8 +-- .../User/Drivers/DriverManageTransfers.razor | 7 +- .../MessageDetailGridComponent.razor | 4 +- TIAMSharedUI/Shared/Components/Navbar.razor | 2 +- .../Shared/Components/Navbar.razor.cs | 39 +++++------ TIAMSharedUI/Shared/Users/AdminNavMenu.razor | 10 +-- TIAMWebApp/Client/Program.cs | 1 - .../Client/Services/SessionServiceWeb.cs | 41 +++--------- .../Client/Services/UserDataServiceWeb.cs | 67 +++++++++---------- .../Shared/Interfaces/ISessionService.cs | 6 +- .../Shared/Interfaces/IUserDataService.cs | 8 ++- .../Services/SessionServiceClientBase.cs | 48 +++++++++++++ 15 files changed, 171 insertions(+), 171 deletions(-) create mode 100644 TIAMWebApp/Shared/Services/SessionServiceClientBase.cs diff --git a/TIAMMobileApp/Services/SessionServiceMobile.cs b/TIAMMobileApp/Services/SessionServiceMobile.cs index e8f4bdb6..be8eaeff 100644 --- a/TIAMMobileApp/Services/SessionServiceMobile.cs +++ b/TIAMMobileApp/Services/SessionServiceMobile.cs @@ -2,44 +2,24 @@ using TIAM.Core.Consts; using TIAM.Entities.Products; using TIAM.Entities.Users; +using TIAM.Models; using TIAMWebApp.Shared.Application.Interfaces; using TIAMWebApp.Shared.Application.Models; +using TIAMWebApp.Shared.Application.Services; using static System.Runtime.InteropServices.JavaScript.JSType; namespace TIAMMobileApp.Services { - public class SessionServiceMobile : ISessionService + public class SessionServiceMobile : SessionServiceClientBase { - public string? SessionId { get; set; } - public UserSessionModel? User { get; set; } - public IPAddress? IPAddress { get; set; } - public bool IsAuthenticated { get; set; } = false; - public bool HasCompany { get; set; } = false; - public bool IsDriver { get; set; } = false; - public bool IsDevAdmin { get; set; } = false; - public bool IsSysAdmin { get; set; } = false; - public List GetHotels() + public override List GetHotels() { - if (User.UserModelDto.Products.Count > 0) - { - return User.UserModelDto.Products.Where(x => x.ProductType == TIAM.Core.Enums.ProductType.Hotel).ToList(); - } - else return new List(); - } - public Guid DriverPersmissionId { get; set; } = Guid.Empty; - - public async Task ClearAll() - { - SessionId = ""; - User = null; - IPAddress = null; - IsAuthenticated = false; - HasCompany = false; - IsDriver = false; - IsDevAdmin = false; - IsSysAdmin = false; - DriverPersmissionId = Guid.Empty; + return base.GetHotels(); } + public override void ClearAll() + { + base.ClearAll(); + } } } diff --git a/TIAMMobileApp/Services/UserDataServiceMobile.cs b/TIAMMobileApp/Services/UserDataServiceMobile.cs index 432247db..902f35e5 100644 --- a/TIAMMobileApp/Services/UserDataServiceMobile.cs +++ b/TIAMMobileApp/Services/UserDataServiceMobile.cs @@ -20,17 +20,17 @@ namespace TIAMMobileApp.Services public class UserDataServiceMobile : IUserDataService { private readonly HttpClient _http; - private readonly SiteViewModel _siteViewModel; - private readonly ISecureStorageHandler _secureStorageHandler; + private readonly ISessionService _sessionService; + private readonly ISecureStorageHandler _secureStorageHandler; private readonly IServiceProviderDataService _serviceProviderDataService; private readonly LoggerClient _logger; - public UserDataServiceMobile(HttpClient http, SiteViewModel siteViewModel, ISecureStorageHandler secureStorageHandler, IServiceProviderDataService serviceProviderDataService, IEnumerable logWriters) + public UserDataServiceMobile(HttpClient http, ISessionService sessionService, ISecureStorageHandler secureStorageHandler, IServiceProviderDataService serviceProviderDataService, IEnumerable logWriters) { _http = http; + _sessionService = sessionService; _secureStorageHandler = secureStorageHandler; - _siteViewModel = siteViewModel; //this._browserConsoleLogWriter = new BrowserConsoleLogWriter(jsRuntime); _serviceProviderDataService = serviceProviderDataService; @@ -46,19 +46,19 @@ namespace TIAMMobileApp.Services if (userModelDto != null) { - Dictionary userProperties = new Dictionary(); + var userProperties = new Dictionary(); //get user's properties - bool hasProperties = userModelDto.ServiceProviders.Count > 0 ? true : userModelDto.ServiceProviders.Count == 0 ? false : false; + var hasProperties = userModelDto.ServiceProviders.Count > 0 ? true : userModelDto.ServiceProviders.Count == 0 ? false : false; if (hasProperties) { //var Properties = await serviceProviderDataService.GetPropertiesByOwnerIdAsync(userModelDto.Id); var Properties = userModelDto.ServiceProviders; - + _logger.Info($"{Properties.Count} properties found"); - foreach ( var property in Properties ) + foreach (var property in Properties) { - userProperties.Add(property.Id, property.Name); + userProperties.Add(property.Id, property.Name); } } @@ -85,7 +85,7 @@ namespace TIAMMobileApp.Services public async Task AuthenticateUser(LoginModel loginModel) { - string result = string.Empty; + var result = string.Empty; var url = $"{Setting.ApiBaseUrl}/{APIUrls.AuthenticateUser}"; var response = await _http.PostAsJsonAsync(url, loginModel); @@ -116,8 +116,8 @@ namespace TIAMMobileApp.Services public async Task<(bool isSuccess, string ErrorMessage)> CreateUser(RegistrationModel regModel) { - bool isSuccess = true; - string result = string.Empty; + var isSuccess = true; + var result = string.Empty; var url = $"{Setting.ApiBaseUrl}/{APIUrls.CreateUser}"; _logger.Info("CreateUser url: " + url); var response = await _http.PostAsJsonAsync(url, regModel); @@ -140,9 +140,9 @@ namespace TIAMMobileApp.Services public async Task<(bool isSuccess, UserModelDto? user)> CreateGuestUser(RegistrationModel regModel) { - bool isSuccess = false; - string result = string.Empty; - UserModelDto? user = new UserModelDto(); + var isSuccess = false; + var result = string.Empty; + var user = new UserModelDto(); var url = $"{Setting.ApiBaseUrl}/{APIUrls.CreateGuestUser}"; _logger.Info("CreateGuestUser url: " + url); var response = await _http.PostAsJsonAsync(url, regModel); @@ -257,7 +257,7 @@ namespace TIAMMobileApp.Services public async Task RefreshToken() { _logger.Info("RefreshToken() called"); - bool isTokenRefreshed = false; + var isTokenRefreshed = false; var url = $"{Setting.ApiBaseUrl}/{APIUrls.RefreshToken}"; //var url = APIUrls.RefreshToken; @@ -274,7 +274,7 @@ namespace TIAMMobileApp.Services var response = await _http.PostAsync(url, new StringContent(serializedStr, Encoding.UTF8, "application/json")); if (response.IsSuccessStatusCode) { - string contentStr = await response.Content.ReadAsStringAsync(); + var contentStr = await response.Content.ReadAsStringAsync(); var mainResponse = JsonConvert.DeserializeObject(contentStr); if (mainResponse.IsSuccess) { @@ -282,7 +282,7 @@ namespace TIAMMobileApp.Services Setting.UserBasicDetails.AccessToken = tokenDetails.AccessToken; Setting.UserBasicDetails.RefreshToken = tokenDetails.RefreshToken; - string userDetailsStr = JsonConvert.SerializeObject(Setting.UserBasicDetails); + var userDetailsStr = JsonConvert.SerializeObject(Setting.UserBasicDetails); await _secureStorageHandler.SaveToSecureStorageAsync(nameof(Setting.UserBasicDetails), userDetailsStr); isTokenRefreshed = true; } @@ -290,7 +290,7 @@ namespace TIAMMobileApp.Services } catch (Exception ex) { - string msg = ex.Message; + var msg = ex.Message; _logger.Error("Refreshtoken exception: " + ex.Message, ex); } @@ -298,18 +298,16 @@ namespace TIAMMobileApp.Services return isTokenRefreshed; } - public async Task Logout(string refreshToken) + public async Task Logout(string? refreshToken) { - _logger.Info("Logout() called"); - - _siteViewModel.ClearAll(); + _logger.Info($"Logout called; refreshToken: {refreshToken}"); var url = $"{Setting.ApiBaseUrl}/{APIUrls.LogoutUser}"; - bool result = false; - var response = await _http.PostAsJsonAsync(url, RefreshToken); + var result = false; + var response = await _http.PostAsJsonAsync(url, refreshToken); if (response.IsSuccessStatusCode) { - string resultMessage = await response.Content.ReadAsStringAsync(); + var resultMessage = await response.Content.ReadAsStringAsync(); _logger.Detail($"Logout response: {resultMessage}"); if (resultMessage == "OK") { @@ -343,7 +341,7 @@ namespace TIAMMobileApp.Services public async Task ValidateForgotPasswordToken(Guid userId, string token) { - string? result = ""; + var result = ""; _logger.Info("ValidateForgotPasswordToken() called"); var url = $"{Setting.ApiBaseUrl}/{APIUrls.ValidateForgottenPasswordToken}"; @@ -359,7 +357,7 @@ namespace TIAMMobileApp.Services public async Task SetEmailConfirmed(Guid userId) { - bool result = false; + var result = false; _logger.Info("SetEmailConfirmed() called"); var url = $"{Setting.ApiBaseUrl}/{APIUrls.SetEmailConfirmed}"; diff --git a/TIAMSharedUI/Pages/AppLaunchComponent.razor b/TIAMSharedUI/Pages/AppLaunchComponent.razor index 0fcef43d..d96aa410 100644 --- a/TIAMSharedUI/Pages/AppLaunchComponent.razor +++ b/TIAMSharedUI/Pages/AppLaunchComponent.razor @@ -30,7 +30,6 @@ @inject IComponentUpdateService ComponentUpdateService @inject AuthenticationStateProvider AuthStateProvider @inject AdminSignalRClient _adminSignalRClient; -@inject SiteViewModel _siteViewModel; @{ if (string.IsNullOrWhiteSpace(TrackingId)) @@ -130,8 +129,8 @@ _adminSignalRClient.GetByIdAsync(SignalRTags.GetSiteViewModelByUserId, signalResponseMessage => { - _siteViewModel.Initialize(signalResponseMessage.ResponseData!); - _logger.Debug($"UnreadMessages: {_siteViewModel.UnreadMessagesCount}"); + sessionService.SiteViewModel.Initialize(signalResponseMessage.ResponseData!); + _logger.Debug($"UnreadMessages: {sessionService.SiteViewModel.UnreadMessagesCount}"); ComponentUpdateService.CallRequestRefresh(); return Task.CompletedTask; @@ -215,10 +214,10 @@ { var userBasicDetail = JsonConvert.DeserializeObject(userDetailsStr); - UserDataService.Logout(userBasicDetail.RefreshToken); + UserDataService.Logout(userBasicDetail?.RefreshToken); AuthStateProvider.GetAuthenticationStateAsync(); SecureStorageHandler.ClearAllSecureStorageAsync(); - sessionService.ClearAll().Forget(); + sessionService.ClearAll(); } CultureInfo Culture diff --git a/TIAMSharedUI/Pages/Login.razor.cs b/TIAMSharedUI/Pages/Login.razor.cs index 8dbfc736..1ecd54ee 100644 --- a/TIAMSharedUI/Pages/Login.razor.cs +++ b/TIAMSharedUI/Pages/Login.razor.cs @@ -23,8 +23,7 @@ namespace TIAMSharedUI.Pages public partial class Login : BasePageComponent { [Inject] private AdminSignalRClient _adminSignalRClient { get; set; } - [Inject] private SiteViewModel _siteViewModel { get; set; } - + [Inject] public NavigationManager navManager { get; set; } [Inject] @@ -39,6 +38,7 @@ namespace TIAMSharedUI.Pages [Inject] public AuthenticationStateProvider AuthStateProvider { get; set; } [Inject] public IComponentUpdateService componentUpdateService { get; set; } + [Inject] public ISessionService sessionService { get; set; } //fill loginmodel with fake but valid data //LoginModel loginModel = new(); @@ -125,8 +125,8 @@ namespace TIAMSharedUI.Pages _adminSignalRClient.GetByIdAsync(SignalRTags.GetSiteViewModelByUserId, signalResponseMessage => { - _siteViewModel.Initialize(signalResponseMessage.ResponseData!); - BrowserConsoleLogWriter.Debug($"UnreadMessages: {_siteViewModel.UnreadMessages.Count}"); + sessionService.SiteViewModel.Initialize(signalResponseMessage.ResponseData!); + BrowserConsoleLogWriter.Debug($"UnreadMessages: {sessionService.SiteViewModel.UnreadMessages.Count}"); componentUpdateService.CallRequestRefreshAll(); return Task.CompletedTask; diff --git a/TIAMSharedUI/Pages/User/Drivers/DriverManageTransfers.razor b/TIAMSharedUI/Pages/User/Drivers/DriverManageTransfers.razor index 4253cc19..b51b7cd3 100644 --- a/TIAMSharedUI/Pages/User/Drivers/DriverManageTransfers.razor +++ b/TIAMSharedUI/Pages/User/Drivers/DriverManageTransfers.razor @@ -33,9 +33,8 @@ @inject IEnumerable LogWriters @inject IStringLocalizer localizer @inject IWizardProcessor wizardProcessor -@inject ITransferDataService transferDataService -@inject ISessionService sessionService -@inject SiteViewModel SiteViewModel; +@inject ITransferDataService transferDataService; +@inject ISessionService sessionService; @inject AdminSignalRClient AdminSignalRClient; Transfers @@ -406,7 +405,7 @@ protected override async Task OnInitializedAsync() { _logger = new LoggerClient(LogWriters.ToArray()); - _pageModel = SiteViewModel.DriverManageTransfersPageModel; + _pageModel = sessionService.SiteViewModel.DriverManageTransfersPageModel; InitializePageAsync(DriverId).Forget(); diff --git a/TIAMSharedUI/Pages/User/SysAdmins/MessageDetailGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/MessageDetailGridComponent.razor index 1deda6e8..aeaf0d62 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/MessageDetailGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/MessageDetailGridComponent.razor @@ -25,7 +25,7 @@ @inherits UserBasePageComponent @inject IEnumerable LogWriters @inject AdminSignalRClient AdminSignalRClient; -@inject SiteViewModel SiteViewModel; +@inject ISessionService sessionService @inject IComponentUpdateService ComponentUpdateService x.Id == emailMessage.Id); + sessionService.SiteViewModel.UnreadMessages.RemoveAll(x => x.Id == emailMessage.Id); ComponentUpdateService.CallRequestRefreshAll(); //InvokeAsync(StateHasChanged).ContinueWith(x => _messageGrid.UpdateDataItemAsync(emailMessage).Forget()); } diff --git a/TIAMSharedUI/Shared/Components/Navbar.razor b/TIAMSharedUI/Shared/Components/Navbar.razor index f106075b..eb6bc0a6 100644 --- a/TIAMSharedUI/Shared/Components/Navbar.razor +++ b/TIAMSharedUI/Shared/Components/Navbar.razor @@ -80,7 +80,7 @@ @{ string url3 = $"user/messages/{userId}"; - @(" (" + SiteViewModel.UnreadMessagesCount + ")") + @(" (" + sessionService.SiteViewModel.UnreadMessagesCount + ")") } diff --git a/TIAMSharedUI/Shared/Components/Navbar.razor.cs b/TIAMSharedUI/Shared/Components/Navbar.razor.cs index d7040c39..4fb17e6f 100644 --- a/TIAMSharedUI/Shared/Components/Navbar.razor.cs +++ b/TIAMSharedUI/Shared/Components/Navbar.razor.cs @@ -28,31 +28,22 @@ namespace TIAMSharedUI.Shared.Components { public partial class Navbar : ComponentBase { - [Inject] - public required IEnumerable LogWriters { get; set; } + [Inject] public required IEnumerable LogWriters { get; set; } - [Inject] - public ISecureStorageHandler SecureStorageHandler { get; set; } + [Inject] public ISecureStorageHandler SecureStorageHandler { get; set; } - [Inject] - public ISessionService sessionService { get; set; } - [Inject] - public IStringLocalizer localizer { get; set; } + [Inject] public ISessionService sessionService { get; set; } + [Inject] public IStringLocalizer localizer { get; set; } - [Inject] - public NavigationManager navigationManager { get; set; } + [Inject] public NavigationManager navigationManager { get; set; } - [Inject] - public IComponentUpdateService componentUpdateService { get; set; } + [Inject] public IComponentUpdateService componentUpdateService { get; set; } - [Inject] - private IUserDataService UserDataService { get; set; } + [Inject] private IUserDataService UserDataService { get; set; } - [Inject] - private IJSRuntime JsRuntime { get; set; } + [Inject] private IJSRuntime JsRuntime { get; set; } [Inject] AuthenticationStateProvider AuthStateProvider { get; set; } - [Inject] SiteViewModel SiteViewModel { get; set; } private bool enableLogin = true; private bool enableEvents = false; @@ -102,15 +93,17 @@ namespace TIAMSharedUI.Shared.Components bool serverResult; string userDetailsStr = await SecureStorageHandler.GetFromSecureStorageAsync(nameof(Setting.UserBasicDetails)); + if (!string.IsNullOrEmpty(userDetailsStr)) { var userBasicDetail = JsonConvert.DeserializeObject(userDetailsStr); - serverResult = await UserDataService.Logout(userBasicDetail.RefreshToken); + serverResult = await UserDataService.Logout(userBasicDetail?.RefreshToken); } + await SecureStorageHandler.ClearAllSecureStorageAsync(); var result = await AuthStateProvider.GetAuthenticationStateAsync(); - await sessionService.ClearAll(); + sessionService.ClearAll(); navigationManager.NavigateTo("/"); myUser = false; } @@ -118,12 +111,12 @@ namespace TIAMSharedUI.Shared.Components protected override void OnInitialized() { - + base.OnInitialized(); navigationManager.LocationChanged += OnLocationChanged; _logger = new LoggerClient(LogWriters.ToArray()); - + _logger.Debug($"Navbar OnInit {DateTime.Now} "); InitUser(); @@ -132,7 +125,7 @@ namespace TIAMSharedUI.Shared.Components private void OnLocationChanged(object sender, LocationChangedEventArgs e) { // Collapse the navbar on navigation - collapseNavMenu=true; + collapseNavMenu = true; _logger.Debug($"{NavMenuCssClass}"); //JsRuntime.InvokeVoidAsync("toggleBootstrapNavMenu", false); StateHasChanged(); @@ -179,7 +172,7 @@ namespace TIAMSharedUI.Shared.Components if (properties == null) return; - + hasProperty = properties.Count > 0; isSysAdmin = sessionService.IsSysAdmin; isDevAdmin = sessionService.IsDevAdmin; diff --git a/TIAMSharedUI/Shared/Users/AdminNavMenu.razor b/TIAMSharedUI/Shared/Users/AdminNavMenu.razor index 972c4c3b..6c23d578 100644 --- a/TIAMSharedUI/Shared/Users/AdminNavMenu.razor +++ b/TIAMSharedUI/Shared/Users/AdminNavMenu.razor @@ -205,6 +205,7 @@ { userHasHotels = true; } + if (SessionService.User != null) { userId = SessionService.User.UserId; @@ -215,6 +216,7 @@ userFullName = SessionService.User.UserModelDto.ProfileDto.FullName; } } + await base.OnInitializedAsync(); } @@ -232,17 +234,17 @@ { bool serverResult; string userDetailsStr = await SecureStorageHandler.GetFromSecureStorageAsync(nameof(Setting.UserBasicDetails)); + if (!string.IsNullOrEmpty(userDetailsStr)) { var userBasicDetail = JsonConvert.DeserializeObject(userDetailsStr); - serverResult = await UserDataService.Logout(userBasicDetail.RefreshToken); + serverResult = await UserDataService.Logout(userBasicDetail?.RefreshToken); } + await SecureStorageHandler.ClearAllSecureStorageAsync(); var result = await AuthStateProvider.GetAuthenticationStateAsync(); - await SessionService.ClearAll(); + SessionService.ClearAll(); NavigationManager.NavigateTo("/"); - } - } diff --git a/TIAMWebApp/Client/Program.cs b/TIAMWebApp/Client/Program.cs index b22fa4ba..c3de9452 100644 --- a/TIAMWebApp/Client/Program.cs +++ b/TIAMWebApp/Client/Program.cs @@ -31,7 +31,6 @@ builder.Services.AddScoped(); builder.Services.AddBlazoredLocalStorage(); builder.Services.AddSingleton(); -builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddScoped(); diff --git a/TIAMWebApp/Client/Services/SessionServiceWeb.cs b/TIAMWebApp/Client/Services/SessionServiceWeb.cs index 01ae7b45..7bee0118 100644 --- a/TIAMWebApp/Client/Services/SessionServiceWeb.cs +++ b/TIAMWebApp/Client/Services/SessionServiceWeb.cs @@ -1,47 +1,22 @@ using System.Net; using TIAM.Entities.Products; +using TIAM.Models; using TIAMWebApp.Shared.Application.Interfaces; using TIAMWebApp.Shared.Application.Models; +using TIAMWebApp.Shared.Application.Services; namespace TIAMWebApp.Client.Services { - public class SessionServiceWeb : ISessionService + public class SessionServiceWeb : SessionServiceClientBase { - public string? SessionId { get; set; } - public UserSessionModel? User { get; set; } - public IPAddress? IPAddress { get; set; } - public bool IsAuthenticated { get; set; } = false; - public bool HasCompany { get; set; } = false; - public bool IsDriver { get; set; } = false; - public bool IsDevAdmin { get; set; } = false; - public bool IsSysAdmin { get; set; } = false; - - public List GetHotels() - { - if(User != null) - { - if(User.UserModelDto.Products.Count > 0) - { - return User.UserModelDto.Products.Where(x => x.ProductType == TIAM.Core.Enums.ProductType.Hotel).ToList(); - } - else return new List(); - } - else return new List(); + public override List GetHotels() + { + return base.GetHotels(); } - public Guid DriverPersmissionId { get; set; } = Guid.Empty; - - public async Task ClearAll() + public override void ClearAll() { - SessionId = ""; - User = null; - IPAddress = null; - IsAuthenticated = false; - HasCompany = false; - IsDriver = false; - IsDevAdmin = false; - IsSysAdmin = false; - DriverPersmissionId = Guid.Empty; + base.ClearAll(); } } } diff --git a/TIAMWebApp/Client/Services/UserDataServiceWeb.cs b/TIAMWebApp/Client/Services/UserDataServiceWeb.cs index ed70444e..367e5fbe 100644 --- a/TIAMWebApp/Client/Services/UserDataServiceWeb.cs +++ b/TIAMWebApp/Client/Services/UserDataServiceWeb.cs @@ -13,6 +13,7 @@ using System.Net.Http; using AyCode.Core.Extensions; using System.Text.Json; using TIAM.Models; +using AyCode.Blazor.Components.Services; namespace TIAMWebApp.Client.Services @@ -20,28 +21,28 @@ namespace TIAMWebApp.Client.Services public class UserDataServiceWeb : IUserDataService { private readonly HttpClient _http; - private readonly SiteViewModel _siteViewModel; + private readonly ISessionService _sessionService; + private readonly ISecureStorageHandler _secureStorageHandler; + //private readonly BrowserConsoleLogWriter _browserConsoleLogWriter; private readonly IServiceProviderDataService _serviceProviderDataService; private readonly LoggerClient _logger; - - - public UserDataServiceWeb(HttpClient http, SiteViewModel siteViewModel, ISecureStorageHandler secureStorageHandler, IServiceProviderDataService serviceProviderDataService, IEnumerable logWriters) - //public UserDataServiceWeb(HttpClient http, ISecureStorageHandler secureStorageHandler, IJSRuntime jSRuntime, IServiceProviderDataService serviceProviderDataService, HttpClientLogItemWriter logWriter) + public UserDataServiceWeb(HttpClient http, ISessionService sessionService, ISecureStorageHandler secureStorageHandler, IServiceProviderDataService serviceProviderDataService, IEnumerable logWriters) + //public UserDataServiceWeb(HttpClient http, ISecureStorageHandler secureStorageHandler, IJSRuntime jSRuntime, IServiceProviderDataService serviceProviderDataService, HttpClientLogItemWriter logWriter) { _http = http; - _siteViewModel = siteViewModel; + _sessionService = sessionService; _secureStorageHandler = secureStorageHandler; - + //this._browserConsoleLogWriter = new BrowserConsoleLogWriter(jsRuntime); _serviceProviderDataService = serviceProviderDataService; _logger = new LoggerClient(logWriters.ToArray()); //_logger = new TIAM.Core.Loggers.Logger(AppType.Web, LogLevel.Info, logWriters.ToArray()); //_logger = new TIAM.Core.Loggers.Logger(AppType.Web, LogLevel.Info, logWriter); } - + public async Task IsLoggedInAsync(Guid id) { @@ -58,11 +59,11 @@ namespace TIAMWebApp.Client.Services //var Properties = await serviceProviderDataService.GetPropertiesByOwnerIdAsync(userModelDto.Id); var properties = userModelDto.ServiceProviders; - + _logger.Info($"{properties.Count} properties found"); - foreach ( var property in properties ) + foreach (var property in properties) { - userProperties.Add(property.Id, property.Name); + userProperties.Add(property.Id, property.Name); } } @@ -90,7 +91,7 @@ namespace TIAMWebApp.Client.Services public async Task AuthenticateUser(LoginModel loginModel) { - string result = string.Empty; + var result = string.Empty; var url = $"{Setting.ApiBaseUrl}/{APIUrls.AuthenticateUser}"; var response = await _http.PostAsJsonAsync(url, loginModel); @@ -121,8 +122,8 @@ namespace TIAMWebApp.Client.Services public async Task<(bool isSuccess, string ErrorMessage)> CreateUser(RegistrationModel regModel) { - bool isSuccess = true; - string result = string.Empty; + var isSuccess = true; + var result = string.Empty; var url = $"{Setting.ApiBaseUrl}/{APIUrls.CreateUser}"; _logger.Info("CreateUser url: " + url); var response = await _http.PostAsJsonAsync(url, regModel); @@ -145,13 +146,13 @@ namespace TIAMWebApp.Client.Services public async Task<(bool isSuccess, UserModelDto? user)> CreateGuestUser(RegistrationModel regModel) { - bool isSuccess = false; - string result = string.Empty; - UserModelDto? user = new UserModelDto(); + var isSuccess = false; + var result = string.Empty; + var user = new UserModelDto(); var url = $"{Setting.ApiBaseUrl}/{APIUrls.CreateGuestUser}"; _logger.Info("CreateGuestUser url: " + url); var response = await _http.PostAsJsonAsync(url, regModel); - + if (response.IsSuccessStatusCode) { @@ -191,7 +192,7 @@ namespace TIAMWebApp.Client.Services public async Task GetUserByEmailAsync(string email) { - + try { @@ -263,7 +264,7 @@ namespace TIAMWebApp.Client.Services public async Task RefreshToken() { _logger.Info("RefreshToken() called"); - bool isTokenRefreshed = false; + var isTokenRefreshed = false; var url = $"{Setting.ApiBaseUrl}/{APIUrls.RefreshToken}"; //var url = APIUrls.RefreshToken; @@ -280,7 +281,7 @@ namespace TIAMWebApp.Client.Services var response = await _http.PostAsync(url, new StringContent(serializedStr, Encoding.UTF8, "application/json")); if (response.IsSuccessStatusCode) { - string contentStr = await response.Content.ReadAsStringAsync(); + var contentStr = await response.Content.ReadAsStringAsync(); var mainResponse = JsonConvert.DeserializeObject(contentStr); if (mainResponse.IsSuccess) { @@ -288,7 +289,7 @@ namespace TIAMWebApp.Client.Services Setting.UserBasicDetails.AccessToken = tokenDetails.AccessToken; Setting.UserBasicDetails.RefreshToken = tokenDetails.RefreshToken; - string userDetailsStr = JsonConvert.SerializeObject(Setting.UserBasicDetails); + var userDetailsStr = JsonConvert.SerializeObject(Setting.UserBasicDetails); await _secureStorageHandler.SaveToSecureStorageAsync(nameof(Setting.UserBasicDetails), userDetailsStr); isTokenRefreshed = true; } @@ -296,7 +297,7 @@ namespace TIAMWebApp.Client.Services } catch (Exception ex) { - string msg = ex.Message; + var msg = ex.Message; _logger.Error("Refreshtoken exception: " + ex.Message, ex); } @@ -305,20 +306,18 @@ namespace TIAMWebApp.Client.Services return isTokenRefreshed; } - public async Task Logout(string refreshToken) + public async Task Logout(string? refreshToken) { - _logger.Info("Logout() called"); - - _siteViewModel.ClearAll(); + _logger.Info($"Logout called; refreshToken: {refreshToken}"); var url = $"{Setting.ApiBaseUrl}/{APIUrls.LogoutUser}"; - bool result = false; + var result = false; var response = await _http.PostAsJsonAsync(url, refreshToken); if (response.IsSuccessStatusCode) { - string resultMessage = await response.Content.ReadAsStringAsync(); - _logger.Detail($"Logout response: {resultMessage}"); - if(resultMessage == "OK") + var resultMessage = await response.Content.ReadAsStringAsync(); + _logger.Detail($"Logout response: {resultMessage}"); + if (resultMessage == "OK") { result = true; } @@ -350,7 +349,7 @@ namespace TIAMWebApp.Client.Services public async Task ValidateForgotPasswordToken(Guid userId, string token) { - string? result = ""; + var result = ""; _logger.Info("ValidateForgotPasswordToken() called"); var url = $"{Setting.ApiBaseUrl}/{APIUrls.ValidateForgottenPasswordToken}"; @@ -366,11 +365,11 @@ namespace TIAMWebApp.Client.Services public async Task SetEmailConfirmed(Guid userId) { - bool result = false; + var result = false; _logger.Info("SetEmailConfirmed() called"); var url = $"{Setting.ApiBaseUrl}/{APIUrls.SetEmailConfirmed}"; - + var response = await _http.PostAsJsonAsync(url, userId); result = await response.Content.ReadFromJsonAsync(); diff --git a/TIAMWebApp/Shared/Interfaces/ISessionService.cs b/TIAMWebApp/Shared/Interfaces/ISessionService.cs index 7dc1cc3b..0bc60780 100644 --- a/TIAMWebApp/Shared/Interfaces/ISessionService.cs +++ b/TIAMWebApp/Shared/Interfaces/ISessionService.cs @@ -1,5 +1,6 @@ using System.Net; using TIAM.Entities.Products; +using TIAM.Models; using TIAMWebApp.Shared.Application.Models; namespace TIAMWebApp.Shared.Application.Interfaces @@ -7,6 +8,9 @@ namespace TIAMWebApp.Shared.Application.Interfaces public interface ISessionService { public string? SessionId { get; set; } + + public SiteViewModel SiteViewModel { get; } + public UserSessionModel? User { get; set; } public IPAddress? IPAddress { get; set; } public bool IsAuthenticated { get; set; } @@ -16,6 +20,6 @@ namespace TIAMWebApp.Shared.Application.Interfaces public bool IsSysAdmin { get; set; } public List GetHotels(); public Guid DriverPersmissionId { get; set; } - public Task ClearAll(); + public void ClearAll(); } } diff --git a/TIAMWebApp/Shared/Interfaces/IUserDataService.cs b/TIAMWebApp/Shared/Interfaces/IUserDataService.cs index f2d44f5f..5f342705 100644 --- a/TIAMWebApp/Shared/Interfaces/IUserDataService.cs +++ b/TIAMWebApp/Shared/Interfaces/IUserDataService.cs @@ -4,9 +4,13 @@ using TIAMWebApp.Shared.Application.Models.PageModels; namespace TIAMWebApp.Shared.Application.Interfaces { + public abstract class UserDataService : IUserDataService + { + + } + public interface IUserDataService { - public Task IsLoggedInAsync(Guid id); public Task AuthenticateUser(LoginModel loginModel); @@ -25,7 +29,7 @@ namespace TIAMWebApp.Shared.Application.Interfaces public Task GetUserByEmailAsync(string email); Task RefreshToken(); - public Task Logout(string refreshToken); + public Task Logout(string? refreshToken); public Task SendForgottenPasswordMail(string emailAddress); diff --git a/TIAMWebApp/Shared/Services/SessionServiceClientBase.cs b/TIAMWebApp/Shared/Services/SessionServiceClientBase.cs new file mode 100644 index 00000000..1159d3b9 --- /dev/null +++ b/TIAMWebApp/Shared/Services/SessionServiceClientBase.cs @@ -0,0 +1,48 @@ +using System.Net; +using TIAM.Entities.Products; +using TIAM.Models; +using TIAMWebApp.Shared.Application.Interfaces; +using TIAMWebApp.Shared.Application.Models; + +namespace TIAMWebApp.Shared.Application.Services; + +public abstract class SessionServiceClientBase : ISessionService +{ + public string? SessionId { get; set; } + public SiteViewModel SiteViewModel { get; } = new(); + + public UserSessionModel? User { get; set; } + public IPAddress? IPAddress { get; set; } + public bool IsAuthenticated { get; set; } = false; + public bool HasCompany { get; set; } = false; + public bool IsDriver { get; set; } = false; + public bool IsDevAdmin { get; set; } = false; + public bool IsSysAdmin { get; set; } = false; + + public Guid DriverPersmissionId { get; set; } = Guid.Empty; + + public virtual List GetHotels() + { + if (User != null) + { + return User.UserModelDto.Products.Count > 0 ? User.UserModelDto.Products.Where(x => x.ProductType == TIAM.Core.Enums.ProductType.Hotel).ToList() : []; + } + + return []; + } + + public virtual void ClearAll() + { + SessionId = string.Empty; + User = null; + IPAddress = null; + IsAuthenticated = false; + HasCompany = false; + IsDriver = false; + IsDevAdmin = false; + IsSysAdmin = false; + DriverPersmissionId = Guid.Empty; + + SiteViewModel.ClearAll(); + } +} \ No newline at end of file