Auction
diff --git a/TIAMSharedUI/Pages/Components/AuctionStep0.razor b/TIAMSharedUI/Pages/Components/AuctionStep0.razor
index 587f3b21..a40c1247 100644
--- a/TIAMSharedUI/Pages/Components/AuctionStep0.razor
+++ b/TIAMSharedUI/Pages/Components/AuctionStep0.razor
@@ -1,7 +1,7 @@
@using TIAMWebApp.Shared.Application.Interfaces;
@using TIAMWebApp.Shared.Application.Models.PageModels;
@using TIAMWebApp.Shared.Application.Models;
-@inject ISessionService sessionService;
+@inject ISessionServiceClient sessionService;
diff --git a/TIAMSharedUI/Pages/Components/AuctionStep1.razor b/TIAMSharedUI/Pages/Components/AuctionStep1.razor
index cd8fb15e..599d028e 100644
--- a/TIAMSharedUI/Pages/Components/AuctionStep1.razor
+++ b/TIAMSharedUI/Pages/Components/AuctionStep1.razor
@@ -1,7 +1,7 @@
@using TIAMWebApp.Shared.Application.Models.PageModels;
@using TIAMWebApp.Shared.Application.Models;
@using TIAMWebApp.Shared.Application.Interfaces;
-@inject ISessionService sessionService;
+@inject ISessionServiceClient sessionService;
diff --git a/TIAMSharedUI/Pages/Components/AuthComponent.razor.cs b/TIAMSharedUI/Pages/Components/AuthComponent.razor.cs
index 3054a159..a4242f4f 100644
--- a/TIAMSharedUI/Pages/Components/AuthComponent.razor.cs
+++ b/TIAMSharedUI/Pages/Components/AuthComponent.razor.cs
@@ -18,7 +18,7 @@ namespace TIAMSharedUI.Pages.Components
public required IEnumerable LogWriters { get; set; }
[Inject]
- public ISessionService sessionService { get; set; }
+ public ISessionServiceClient sessionService { get; set; }
public bool IsLoggedIn = false;
[Inject]
public IComponentUpdateService componentUpdateService { get; set; }
diff --git a/TIAMSharedUI/Pages/Components/EditComponents/DynamicEditForm.razor b/TIAMSharedUI/Pages/Components/EditComponents/DynamicEditForm.razor
index c16cc6c8..5c89977b 100644
--- a/TIAMSharedUI/Pages/Components/EditComponents/DynamicEditForm.razor
+++ b/TIAMSharedUI/Pages/Components/EditComponents/DynamicEditForm.razor
@@ -11,7 +11,7 @@
@using TIAMWebApp.Shared.Application.Interfaces
@using TIAMWebApp.Shared.Application.Utility
@inject IEnumerable LogWriters
-@inject ISessionService _sessionService
+@inject ISessionServiceClient _sessionService
@if (isEditing)
{
diff --git a/TIAMSharedUI/Pages/Components/InputWizard.razor.cs b/TIAMSharedUI/Pages/Components/InputWizard.razor.cs
index 8f3f874a..87565e05 100644
--- a/TIAMSharedUI/Pages/Components/InputWizard.razor.cs
+++ b/TIAMSharedUI/Pages/Components/InputWizard.razor.cs
@@ -28,7 +28,7 @@ namespace TIAMSharedUI.Pages.Components
IStringLocalizer localizer { get; set; }
[Inject]
- public ISessionService sessionService { get; set; }
+ public ISessionServiceClient sessionService { get; set; }
public Dictionary FormSteps { get; set; } = new Dictionary();
public int CurrentStep { get; set; } = 0;
diff --git a/TIAMSharedUI/Pages/Components/TransferStep0.razor b/TIAMSharedUI/Pages/Components/TransferStep0.razor
index a8995e26..053393c5 100644
--- a/TIAMSharedUI/Pages/Components/TransferStep0.razor
+++ b/TIAMSharedUI/Pages/Components/TransferStep0.razor
@@ -1,6 +1,6 @@
@using TIAMWebApp.Shared.Application.Interfaces;
@using TIAMWebApp.Shared.Application.Models;
-@inject ISessionService sessionService;
+@inject ISessionServiceClient sessionService;
diff --git a/TIAMSharedUI/Pages/Components/TransferStep1.razor b/TIAMSharedUI/Pages/Components/TransferStep1.razor
index 675b7d31..1978b025 100644
--- a/TIAMSharedUI/Pages/Components/TransferStep1.razor
+++ b/TIAMSharedUI/Pages/Components/TransferStep1.razor
@@ -1,6 +1,6 @@
@using TIAMWebApp.Shared.Application.Models;
@using TIAMWebApp.Shared.Application.Interfaces;
-@inject ISessionService sessionService;
+@inject ISessionServiceClient sessionService;
diff --git a/TIAMSharedUI/Pages/Formula1.razor b/TIAMSharedUI/Pages/Formula1.razor
index 922047c8..1d6744d3 100644
--- a/TIAMSharedUI/Pages/Formula1.razor
+++ b/TIAMSharedUI/Pages/Formula1.razor
@@ -17,7 +17,7 @@
@inject IUserDataService UserDataService;
@inject IJSRuntime jsRuntime;
@inject ISecureStorageHandler SecureStorageHandler
-@inject ISessionService sessionService;
+@inject ISessionServiceClient sessionService;
@inject IStringLocalizer localizer;
@inject NavigationManager navManager
@inject IAcLogWriterClientBase BrowserConsoleLogWriter
diff --git a/TIAMSharedUI/Pages/Index.razor b/TIAMSharedUI/Pages/Index.razor
index c2e934da..dedf634c 100644
--- a/TIAMSharedUI/Pages/Index.razor
+++ b/TIAMSharedUI/Pages/Index.razor
@@ -14,7 +14,7 @@
@inject IUserDataService UserDataService;
@inject IJSRuntime jsRuntime;
@inject ISecureStorageHandler SecureStorageHandler
-@inject ISessionService sessionService;
+@inject ISessionServiceClient sessionService;
@inject IStringLocalizer localizer;
@inject NavigationManager navManager
@inject IAcLogWriterClientBase BrowserConsoleLogWriter
diff --git a/TIAMSharedUI/Pages/Login.razor.cs b/TIAMSharedUI/Pages/Login.razor.cs
index 3bef497a..5b571bcc 100644
--- a/TIAMSharedUI/Pages/Login.razor.cs
+++ b/TIAMSharedUI/Pages/Login.razor.cs
@@ -39,7 +39,7 @@ namespace TIAMSharedUI.Pages
[Inject]
public AuthenticationStateProvider AuthStateProvider { get; set; }
[Inject] public IComponentUpdateService componentUpdateService { get; set; }
- [Inject] public ISessionService sessionService { get; set; }
+ [Inject] public ISessionServiceClient sessionService { get; set; }
//fill loginmodel with fake but valid data
//LoginModel loginModel = new();
diff --git a/TIAMSharedUI/Pages/PublicCreateAndManageTransfer.razor b/TIAMSharedUI/Pages/PublicCreateAndManageTransfer.razor
index df50869e..4afedf3a 100644
--- a/TIAMSharedUI/Pages/PublicCreateAndManageTransfer.razor
+++ b/TIAMSharedUI/Pages/PublicCreateAndManageTransfer.razor
@@ -16,7 +16,7 @@
@using AyCode.Core.Extensions
@layout AdminLayout
@inject IPopulationStructureDataProvider DataProvider
-@inject ISessionService SessionService
+@inject ISessionServiceClient SessionService
@inject IUserDataService UserDataService
@inject IEnumerable LogWriters
@inject AdminSignalRClient _adminSignalRClient
diff --git a/TIAMSharedUI/Pages/Settings.razor.cs b/TIAMSharedUI/Pages/Settings.razor.cs
index 57b45548..3e17e29d 100644
--- a/TIAMSharedUI/Pages/Settings.razor.cs
+++ b/TIAMSharedUI/Pages/Settings.razor.cs
@@ -17,7 +17,7 @@ namespace TIAMSharedUI.Pages
public IStringLocalizer? localizer { get; set; }
[Inject]
- public ISessionService SessionService { get; set; }
+ public ISessionServiceClient SessionService { get; set; }
public string Language { get; set; } = "en-US";
diff --git a/TIAMSharedUI/Pages/User/Drivers/DriverManageCars.razor b/TIAMSharedUI/Pages/User/Drivers/DriverManageCars.razor
index 93fe5222..fb41b291 100644
--- a/TIAMSharedUI/Pages/User/Drivers/DriverManageCars.razor
+++ b/TIAMSharedUI/Pages/User/Drivers/DriverManageCars.razor
@@ -17,7 +17,7 @@
@layout AdminLayout
@inject IEnumerable LogWriters
@inject IStringLocalizer Localizer
-@inject ISessionService SessionService
+@inject ISessionServiceClient SessionService
@inject IWizardProcessor WizardProcessor
@inject IUserDataService UserDataService
Car list
diff --git a/TIAMSharedUI/Pages/User/Drivers/DriverManageTransfers.razor b/TIAMSharedUI/Pages/User/Drivers/DriverManageTransfers.razor
index b6c9d782..832dc177 100644
--- a/TIAMSharedUI/Pages/User/Drivers/DriverManageTransfers.razor
+++ b/TIAMSharedUI/Pages/User/Drivers/DriverManageTransfers.razor
@@ -34,7 +34,7 @@
@inject IStringLocalizer localizer
@inject IWizardProcessor wizardProcessor
@inject ITransferDataService transferDataService;
-@inject ISessionService sessionService;
+@inject ISessionServiceClient sessionService;
@inject AdminSignalRClient AdminSignalRClient;
Transfers
diff --git a/TIAMSharedUI/Pages/User/Hotels/HotelComponent.razor.cs b/TIAMSharedUI/Pages/User/Hotels/HotelComponent.razor.cs
index 2f4e150e..a6e1ba3b 100644
--- a/TIAMSharedUI/Pages/User/Hotels/HotelComponent.razor.cs
+++ b/TIAMSharedUI/Pages/User/Hotels/HotelComponent.razor.cs
@@ -37,7 +37,7 @@ namespace TIAMSharedUI.Pages.User.Hotels
[Inject] IEnumerable LogWriters { get; set; }
- [Inject] ISessionService SessionService { get; set; }
+ [Inject] ISessionServiceClient SessionService { get; set; }
private LoggerClient _logger;
diff --git a/TIAMSharedUI/Pages/User/Hotels/ManageIncome.razor b/TIAMSharedUI/Pages/User/Hotels/ManageIncome.razor
index 57aaa2f1..e7984c01 100644
--- a/TIAMSharedUI/Pages/User/Hotels/ManageIncome.razor
+++ b/TIAMSharedUI/Pages/User/Hotels/ManageIncome.razor
@@ -29,7 +29,7 @@
@inject IStringLocalizer localizer
@inject IWizardProcessor wizardProcessor
@inject ITransferDataService transferDataService
-@inject ISessionService sessionService
+@inject ISessionServiceClient sessionService
@inject AdminSignalRClient AdminSignalRClient;
Transfers
diff --git a/TIAMSharedUI/Pages/User/ManageAccount.razor b/TIAMSharedUI/Pages/User/ManageAccount.razor
index 6b8132f2..7e5f1769 100644
--- a/TIAMSharedUI/Pages/User/ManageAccount.razor
+++ b/TIAMSharedUI/Pages/User/ManageAccount.razor
@@ -33,7 +33,7 @@
@inject IStringLocalizer localizer
@inject IWizardProcessor wizardProcessor
@inject ITransferDataService transferDataService
-@inject ISessionService sessionService
+@inject ISessionServiceClient sessionService
@inject AdminSignalRClient AdminSignalRClient;
Transfers
diff --git a/TIAMSharedUI/Pages/User/ManageMyServiceProvider.razor b/TIAMSharedUI/Pages/User/ManageMyServiceProvider.razor
index b118ba27..134ac545 100644
--- a/TIAMSharedUI/Pages/User/ManageMyServiceProvider.razor
+++ b/TIAMSharedUI/Pages/User/ManageMyServiceProvider.razor
@@ -19,7 +19,7 @@
@inject IStringLocalizer localizer
@inject IServiceProviderDataService serviceProviderDataService
@inject IUserDataService userDataService
-@inject ISessionService sessionService
+@inject ISessionServiceClient sessionService
@inject AdminSignalRClient AdminSignalRClient;
Admin - Companies
diff --git a/TIAMSharedUI/Pages/User/Messages.razor b/TIAMSharedUI/Pages/User/Messages.razor
index 7e422a7a..671fc5b5 100644
--- a/TIAMSharedUI/Pages/User/Messages.razor
+++ b/TIAMSharedUI/Pages/User/Messages.razor
@@ -5,7 +5,7 @@
@using TIAMSharedUI.Pages.User.SysAdmins
@using TIAMWebApp.Shared.Application.Interfaces
@using TIAMWebApp.Shared.Application.Services
-@inject ISessionService sessionService;
+@inject ISessionServiceClient sessionService;
@inject AdminSignalRClient AdminSignalRClient;
@inject IJSRuntime jsRuntime
diff --git a/TIAMSharedUI/Pages/User/MyServiceProviders.razor b/TIAMSharedUI/Pages/User/MyServiceProviders.razor
index e958d92f..0deeff6f 100644
--- a/TIAMSharedUI/Pages/User/MyServiceProviders.razor
+++ b/TIAMSharedUI/Pages/User/MyServiceProviders.razor
@@ -19,7 +19,7 @@
@layout AdminLayout
@inject IEnumerable LogWriters
@inject IStringLocalizer localizer
-@inject ISessionService SessionService
+@inject ISessionServiceClient SessionService
@inject IServiceProviderDataService ServiceProviderDataService
@inject AdminSignalRClient AdminSignalRClient;
User permissions
diff --git a/TIAMSharedUI/Pages/User/ServiceProvider.razor b/TIAMSharedUI/Pages/User/ServiceProvider.razor
index 6a1ccb3e..1eb4ab1a 100644
--- a/TIAMSharedUI/Pages/User/ServiceProvider.razor
+++ b/TIAMSharedUI/Pages/User/ServiceProvider.razor
@@ -16,7 +16,7 @@
@inject IStringLocalizer localizer
@inject IServiceProviderDataService serviceProviderDataService
@inject IUserDataService userDataService
-@inject ISessionService sessionService
+@inject ISessionServiceClient sessionService
@inject AdminSignalRClient AdminSignalRClient;
Admin - Companies
diff --git a/TIAMSharedUI/Pages/User/SysAdmins/LogViewer.razor b/TIAMSharedUI/Pages/User/SysAdmins/LogViewer.razor
index 694a1b89..fcb3c351 100644
--- a/TIAMSharedUI/Pages/User/SysAdmins/LogViewer.razor
+++ b/TIAMSharedUI/Pages/User/SysAdmins/LogViewer.razor
@@ -15,7 +15,7 @@
@layout AdminLayout
@inject IEnumerable LogWriters
@inject IStringLocalizer Localizer
-@inject ISessionService SessionService
+@inject ISessionServiceClient SessionService
User permissions
diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageDrivers.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageDrivers.razor
index 30e92d14..b33730a7 100644
--- a/TIAMSharedUI/Pages/User/SysAdmins/ManageDrivers.razor
+++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageDrivers.razor
@@ -13,7 +13,7 @@
@using TIAM.Core.Consts
@layout AdminLayout
@inject IStringLocalizer Localizer
-@inject ISessionService SessionService
+@inject ISessionServiceClient SessionService
@using TIAMSharedUI.Shared.Components.BaseComponents
@inherits UserBasePageComponent
diff --git a/TIAMSharedUI/Pages/User/SysAdmins/MessageDetailGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/MessageDetailGridComponent.razor
index aeaf0d62..881a4f31 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 ISessionService sessionService
+@inject ISessionServiceClient sessionService
@inject IComponentUpdateService ComponentUpdateService
localizer
@inject IWizardProcessor wizardProcessor
@inject ITransferDataService transferDataService
-@inject ISessionService sessionService
+@inject ISessionServiceClient sessionService
@inject AdminSignalRClient AdminSignalRClient;
Transfers
diff --git a/TIAMSharedUI/Shared/AdminLayout.razor b/TIAMSharedUI/Shared/AdminLayout.razor
index d5a1d5e7..777fea80 100644
--- a/TIAMSharedUI/Shared/AdminLayout.razor
+++ b/TIAMSharedUI/Shared/AdminLayout.razor
@@ -10,7 +10,7 @@
@inject NavigationManager NavManager
@inject IJSRuntime jsRuntime
@inject ISecureStorageHandler SecureStorageHandler
-@inject ISessionService sessionService
+@inject ISessionServiceClient sessionService
@inject IEnumerable LogWriters
@inject IUserDataService userDataService
@attribute [Authorize]
diff --git a/TIAMSharedUI/Shared/Components/BaseComponents/BasePageComponent.cs b/TIAMSharedUI/Shared/Components/BaseComponents/BasePageComponent.cs
index 27abd721..8571a12b 100644
--- a/TIAMSharedUI/Shared/Components/BaseComponents/BasePageComponent.cs
+++ b/TIAMSharedUI/Shared/Components/BaseComponents/BasePageComponent.cs
@@ -29,10 +29,10 @@ namespace TIAMSharedUI.Shared.Components.BaseComponents
protected IStringLocalizer _localizer { get; set; }
[Inject]
- protected ISessionService _sessionService { get; set; }
+ protected ISessionServiceClient _sessionService { get; set; }
private LoggerClient _logger = null!;
- public BasePageComponent(NavigationManager navManager, PageHistoryState pageState, IEnumerable logWriters, IStringLocalizer localizer,ISessionService sessionService)
+ public BasePageComponent(NavigationManager navManager, PageHistoryState pageState, IEnumerable logWriters, IStringLocalizer localizer,ISessionServiceClient sessionService)
{
_navManager = navManager;
_pageState = pageState;
diff --git a/TIAMSharedUI/Shared/Components/Navbar.razor.cs b/TIAMSharedUI/Shared/Components/Navbar.razor.cs
index e06a816f..c092ba77 100644
--- a/TIAMSharedUI/Shared/Components/Navbar.razor.cs
+++ b/TIAMSharedUI/Shared/Components/Navbar.razor.cs
@@ -32,7 +32,7 @@ namespace TIAMSharedUI.Shared.Components
[Inject] public ISecureStorageHandler SecureStorageHandler { get; set; }
- [Inject] public ISessionService sessionService { get; set; }
+ [Inject] public ISessionServiceClient sessionService { get; set; }
[Inject] public IStringLocalizer localizer { get; set; }
[Inject] public NavigationManager navigationManager { get; set; }
@@ -90,21 +90,26 @@ namespace TIAMSharedUI.Shared.Components
private async Task SignOut()
{
+ _logger.Info("Navbar->SignOut called");
+
//SiteViewModel.ClearAll();
- bool serverResult;
- string userDetailsStr = await SecureStorageHandler.GetFromSecureStorageAsync(nameof(Setting.UserBasicDetails));
+ //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);
- }
+ //if (!string.IsNullOrEmpty(userDetailsStr))
+ //{
+ // var userBasicDetail = JsonConvert.DeserializeObject(userDetailsStr);
+ // serverResult = await UserDataService.Logout(userBasicDetail?.RefreshToken);
+ //}
- await SecureStorageHandler.ClearAllSecureStorageAsync();
- var result = await AuthStateProvider.GetAuthenticationStateAsync();
+ //await SecureStorageHandler.ClearAllSecureStorageAsync();
+ //var result = await AuthStateProvider.GetAuthenticationStateAsync();
+
+ //sessionService.ClearAll();
+
+ await UserDataService.SignOut();
- sessionService.ClearAll();
navigationManager.NavigateTo("/");
myUser = false;
}
diff --git a/TIAMSharedUI/Shared/Users/AdminNavMenu.razor b/TIAMSharedUI/Shared/Users/AdminNavMenu.razor
index 3079ac10..5d99b997 100644
--- a/TIAMSharedUI/Shared/Users/AdminNavMenu.razor
+++ b/TIAMSharedUI/Shared/Users/AdminNavMenu.razor
@@ -6,7 +6,7 @@
@using AyCode.Interfaces.StorageHandlers;
@using TIAMWebApp.Shared.Application.Utility
@inject ISecureStorageHandler SecureStorageHandler
-@inject ISessionService SessionService
+@inject ISessionServiceClient SessionService
@inject IUserDataService UserDataService
@inject AuthenticationStateProvider AuthStateProvider
@inject NavigationManager NavigationManager
@@ -234,7 +234,7 @@
await SecureStorageHandler.ClearAllSecureStorageAsync();
var result = await AuthStateProvider.GetAuthenticationStateAsync();
- SessionService.ClearAll();
+ await SessionService.ClearAll();
NavigationManager.NavigateTo("/");
}
}
diff --git a/TIAMWebApp/Client/Program.cs b/TIAMWebApp/Client/Program.cs
index 4be83f19..a5705df7 100644
--- a/TIAMWebApp/Client/Program.cs
+++ b/TIAMWebApp/Client/Program.cs
@@ -15,6 +15,7 @@ using System.Net;
using Microsoft.AspNetCore.Components.Authorization;
using TIAM.Models;
using TIAM.Models.PageViewModels;
+using Microsoft.Extensions.DependencyInjection;
var builder = WebAssemblyHostBuilder.CreateDefault(args);
@@ -22,23 +23,23 @@ var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add("#app");
builder.RootComponents.Add("head::after");
builder.Services.AddLocalization();
-builder.Services.AddScoped();
-builder.Services.AddScoped();
-builder.Services.AddScoped();
-builder.Services.AddScoped();
-builder.Services.AddScoped();
-builder.Services.AddScoped();
-builder.Services.AddBlazoredLocalStorage();
-builder.Services.AddSingleton();
+builder.Services.AddSingleton();
+builder.Services.AddSingleton();
+builder.Services.AddSingleton();
+builder.Services.AddSingleton();
+builder.Services.AddSingleton();
+builder.Services.AddSingleton();
+builder.Services.AddBlazoredLocalStorageAsSingleton();
+builder.Services.AddSingleton();
builder.Services.AddSingleton();
-builder.Services.AddScoped();
-builder.Services.AddScoped();
-builder.Services.AddScoped();
-builder.Services.AddScoped();
+builder.Services.AddSingleton();
+builder.Services.AddSingleton();
+builder.Services.AddSingleton();
+builder.Services.AddSingleton();
//WebSpecific
-builder.Services.AddScoped();
+builder.Services.AddSingleton();
builder.Services.AddSingleton(x => new ResourceManager("TIAMWebApp.Client.Resources.MyResources", typeof(Program).Assembly));
#if DEBUG
@@ -50,13 +51,13 @@ builder.Services.AddSingleton
builder.Services.AddSingleton();
builder.Services.AddSingleton();
builder.Services.AddSingleton();
-builder.Services.AddScoped();
+builder.Services.AddSingleton();
builder.Services.AddAuthorizationCore();
-builder.Services.AddScoped();
-builder.Services.AddScoped();
-builder.Services.AddScoped();
+builder.Services.AddSingleton();
+builder.Services.AddSingleton();
+builder.Services.AddSingleton();
builder.Services.AddSingleton();
-//builder.Services.AddScoped();
+//builder.Services.AddSingleton();
//WebSpecific end
diff --git a/TIAMWebApp/Client/Services/SessionServiceWeb.cs b/TIAMWebApp/Client/Services/SessionServiceWeb.cs
index 7bee0118..6ea78efd 100644
--- a/TIAMWebApp/Client/Services/SessionServiceWeb.cs
+++ b/TIAMWebApp/Client/Services/SessionServiceWeb.cs
@@ -1,4 +1,6 @@
-using System.Net;
+using AyCode.Interfaces.StorageHandlers;
+using Microsoft.AspNetCore.Components.Authorization;
+using System.Net;
using TIAM.Entities.Products;
using TIAM.Models;
using TIAMWebApp.Shared.Application.Interfaces;
@@ -7,16 +9,17 @@ using TIAMWebApp.Shared.Application.Services;
namespace TIAMWebApp.Client.Services
{
- public class SessionServiceWeb : SessionServiceClientBase
+ public class SessionServiceWeb(ISecureStorageHandler secureStorageHandler, AuthenticationStateProvider authStateProvider)
+ : SessionServiceClientBase(secureStorageHandler, authStateProvider)
{
public override List GetHotels()
{
return base.GetHotels();
}
- public override void ClearAll()
+ public override Task ClearAll()
{
- base.ClearAll();
+ return base.ClearAll();
}
}
}
diff --git a/TIAMWebApp/Client/Services/UserDataServiceWeb.cs b/TIAMWebApp/Client/Services/UserDataServiceWeb.cs
index 6a9e8d63..fa5a974e 100644
--- a/TIAMWebApp/Client/Services/UserDataServiceWeb.cs
+++ b/TIAMWebApp/Client/Services/UserDataServiceWeb.cs
@@ -19,7 +19,7 @@ using TIAMWebApp.Shared.Application.Services;
namespace TIAMWebApp.Client.Services
{
- public class UserDataServiceWeb(HttpClient http, AdminSignalRClient adminSignalRClient, ISessionService sessionService, ISecureStorageHandler secureStorageHandler, IServiceProviderDataService serviceProviderDataService, IEnumerable logWriters)
+ public class UserDataServiceWeb(HttpClient http, AdminSignalRClient adminSignalRClient, ISessionServiceClient sessionService, ISecureStorageHandler secureStorageHandler, IServiceProviderDataService serviceProviderDataService, IEnumerable logWriters)
: UserDataServiceClientBase(http, adminSignalRClient, sessionService, secureStorageHandler, serviceProviderDataService, logWriters);
}
diff --git a/TIAMWebApp/Server/Services/AcWebSignalRHubWithSessionBase.cs b/TIAMWebApp/Server/Services/AcWebSignalRHubWithSessionBase.cs
new file mode 100644
index 00000000..974ba5d1
--- /dev/null
+++ b/TIAMWebApp/Server/Services/AcWebSignalRHubWithSessionBase.cs
@@ -0,0 +1,42 @@
+using AyCode.Blazor.Components.Services;
+using AyCode.Core.Loggers;
+using AyCode.Services.SignalRs;
+using TIAM.Database.DataLayers.Users;
+using TIAM.Services;
+using TIAM.Services.Server.Logins;
+
+namespace TIAMWebApp.Server.Services;
+
+public class AcWebSignalRHubWithSessionBase(IConfiguration configuration, UserDal userDal, SessionService sessionService, TLogger logger)
+ : AcWebSignalRHubBase(configuration, logger) where TSignalRTags : AcSignalRTags where TLogger : AcLoggerBase//Hub, IAcSignalRHubServer
+{
+ protected readonly UserDal UserDal = userDal;
+ protected SessionService SessionService = sessionService;
+
+ public override async Task OnConnectedAsync()
+ {
+ await base.OnConnectedAsync();
+
+ SessionService.Sessions.TryAdd(Context.ConnectionId, new SessionItem(Context.ConnectionId, new LoginService(UserDal, Configuration)));
+ Logger.Info($"_sessionService.Sessions count: {SessionService.Sessions.Count}");
+
+ ////insert or updatde them into database.
+ //var CId = _context.UserIdToCId.Find(userId);
+ //CId.ConnectionId = connectionid;
+ //_context.Update(CId);
+ //await _context.SaveChangesAsync();
+ //await base.OnConnectedAsync();
+ ////await Groups.AddToGroupAsync(Context.ConnectionId, "SignalR Users");
+ }
+
+ public override async Task OnDisconnectedAsync(Exception? exception)
+ {
+ await base.OnDisconnectedAsync(exception);
+
+ if (SessionService.Sessions.TryRemove(Context.ConnectionId, out var sessionItem)) sessionItem.LoginService.Logout();
+ Logger.Info($"_sessionService.Sessions count: {SessionService.Sessions.Count}");
+
+ //await Groups.RemoveFromGroupAsync(Context.ConnectionId, "SignalR Users");
+ }
+
+}
\ No newline at end of file
diff --git a/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs b/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs
index 5c654122..c9acfea4 100644
--- a/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs
+++ b/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs
@@ -1,192 +1,39 @@
-using AyCode.Core.Extensions;
+using AyCode.Blazor.Models.Server.Models;
+using AyCode.Core.Extensions;
using AyCode.Core.Loggers;
using AyCode.Services.SignalRs;
-using Microsoft.AspNetCore.SignalR;
using TIAM.Database.DataLayers.Admins;
-using MessagePack.Resolvers;
-using AyCode.Services.Server.SignalRs;
using TIAM.Services;
using TIAMWebApp.Server.Controllers;
-using MessagePack;
using TIAM.Entities.Addresses;
-using System.Linq.Expressions;
-using AyCode.Core.Helpers;
-using Profile = TIAM.Entities.Profiles.Profile;
-using Serialize.Linq.Serializers;
-using System.Security.Claims;
-using AyCode.Core;
-using AyCode.Blazor.Components.Services;
using TIAM.Database.DataLayers.Users;
-using TIAM.Services.Server.Logins;
-using TIAMWebApp.Shared.Application.Interfaces;
+using TIAM.Entities.Profiles;
+using TIAM.Core.Loggers;
namespace TIAMWebApp.Server.Services;
-public class DevAdminSignalRHub : Hub, IAcSignalRHubServer
+public class DevAdminSignalRHub : AcWebSignalRHubWithSessionBase>
{
- private readonly List> _dynamicMethodCallModels = [];
- private readonly TIAM.Core.Loggers.Logger _logger;
-
- private SessionService _sessionService;
- private IConfiguration _configuration;
-
private readonly AdminDal _adminDal;
- private readonly UserDal _userDal;
- //private readonly ServiceProviderAPIController _serviceProviderApiController;
- //private readonly TransferDataAPIController _transferDataApiController;
- public DevAdminSignalRHub(IConfiguration configuration, AdminDal adminDal, UserDal userDal, UserAPIController userApiController, ServiceProviderAPIController serviceProviderApiController, TransferDataAPIController transferDataApiController, MessageAPIController messageApiController, ProfileAPIController profileApiController, LoggerApiController loggerApiController, SessionService sessionService, IEnumerable logWriters)
+ public DevAdminSignalRHub(IConfiguration configuration, AdminDal adminDal, UserDal userDal, UserAPIController userApiController, ServiceProviderAPIController serviceProviderApiController, TransferDataAPIController transferDataApiController, MessageAPIController messageApiController, ProfileAPIController profileApiController, LoggerApiController loggerApiController, SessionService sessionService, IEnumerable logWriters)
+ : base(configuration, userDal, sessionService, new TIAM.Core.Loggers.Logger(logWriters.ToArray()))
{
_adminDal = adminDal;
- _userDal = userDal;
- _configuration = configuration;
-
- //_serviceProviderApiController = serviceProviderApiController;
- //_transferDataApiController = transferDataApiController;
-
- _logger = new(logWriters.ToArray());
- _sessionService = sessionService;
-
- _dynamicMethodCallModels.Add(new DynamicMethodCallModel(userApiController));
- _dynamicMethodCallModels.Add(new DynamicMethodCallModel(serviceProviderApiController));
- _dynamicMethodCallModels.Add(new DynamicMethodCallModel(transferDataApiController));
- _dynamicMethodCallModels.Add(new DynamicMethodCallModel(messageApiController));
- _dynamicMethodCallModels.Add(new DynamicMethodCallModel(profileApiController));
- _dynamicMethodCallModels.Add(new DynamicMethodCallModel(loggerApiController));
+ DynamicMethodCallModels.Add(new DynamicMethodCallModel(userApiController));
+ DynamicMethodCallModels.Add(new DynamicMethodCallModel(serviceProviderApiController));
+ DynamicMethodCallModels.Add(new DynamicMethodCallModel(transferDataApiController));
+ DynamicMethodCallModels.Add(new DynamicMethodCallModel(messageApiController));
+ DynamicMethodCallModels.Add(new DynamicMethodCallModel(profileApiController));
+ DynamicMethodCallModels.Add(new DynamicMethodCallModel(loggerApiController));
//_dynamicMethodCallModels.Add(new DynamicMethodCallModel(typeof(AdminDal)));
-
}
- // https://docs.microsoft.com/en-us/aspnet/core/signalr/hubs?view=aspnetcore-3.1#strongly-typed-hubs
- public override async Task OnConnectedAsync()
+ public override Task OnReceiveMessage(int messageTag, byte[]? message, int? requestId)
{
- _logger.Debug($"Server OnConnectedAsync; ConnectionId: {Context.ConnectionId}; UserIdentifier: {Context.UserIdentifier}");
-
- LogContextUserNameAndId();
-
- _sessionService.Sessions.TryAdd(Context.ConnectionId, new SessionItem(Context.ConnectionId, new LoginService(_userDal, _configuration)));
- _logger.Info($"_sessionService.Sessions count: {_sessionService.Sessions.Count}");
-
- ////insert or updatde them into database.
- //var CId = _context.UserIdToCId.Find(userId);
- //CId.ConnectionId = connectionid;
- //_context.Update(CId);
- //await _context.SaveChangesAsync();
- //await base.OnConnectedAsync();
- ////await Groups.AddToGroupAsync(Context.ConnectionId, "SignalR Users");
-
- await base.OnConnectedAsync();
-
- //Clients.Caller.ConnectionId = Context.ConnectionId;
- //Clients.Caller.UserIdentifier = Context.UserIdentifier;
- }
-
- public override async Task OnDisconnectedAsync(Exception? exception)
- {
- var logText = $"Server OnDisconnectedAsync; ConnectionId: {Context.ConnectionId}; UserIdentifier: {Context.UserIdentifier};";
-
- if (exception == null) _logger.Debug(logText);
- else _logger.Error(logText, exception);
-
- LogContextUserNameAndId();
-
- if (_sessionService.Sessions.TryRemove(Context.ConnectionId, out var sessionItem)) sessionItem.LoginService.Logout();
- _logger.Info($"_sessionService.Sessions count: {_sessionService.Sessions.Count}");
-
- //await Groups.RemoveFromGroupAsync(Context.ConnectionId, "SignalR Users");
- await base.OnDisconnectedAsync(exception);
- }
-
- public async Task OnReceiveMessage(int messageTag, byte[]? message, int? requestId)
- {
- var tagName = ConstHelper.NameByValue(messageTag);
- var logText = $"Server OnReceiveMessage; {nameof(requestId)}: {requestId}; ConnectionId: {Context.ConnectionId}; {tagName}";
-
- if (message is { Length: 0 }) _logger.Warning($"message.Length == 0! {logText}");
- else _logger.Info($"[{message?.Length:N0}b] {logText}");
-
- try
+ return ProcessOnReceiveMessage(messageTag, message, requestId, async tagName =>
{
- if (AcDomain.IsDeveloperVersion) LogContextUserNameAndId();
-
- foreach (var methodsByDeclaringObject in _dynamicMethodCallModels)
- {
- if (!methodsByDeclaringObject.MethodsByMessageTag.TryGetValue(messageTag, out var methodInfoModel)) continue;
-
- object[]? paramValues = null;
-
- logText = $"Found dynamic method for the tag! method: {methodsByDeclaringObject.InstanceObject.GetType().Name}.{methodInfoModel.MethodInfo.Name}";
-
- if (methodInfoModel.ParamInfos is { Length: > 0 })
- {
- _logger.Debug($"{logText}({string.Join(", ", methodInfoModel.ParamInfos.Select(x => x.Name))}); {tagName}");
-
- paramValues = new object[methodInfoModel.ParamInfos.Length];
-
- var firstParamType = methodInfoModel.ParamInfos[0].ParameterType;
- if (methodInfoModel.ParamInfos.Length > 1 || firstParamType == typeof(string) || firstParamType.IsEnum || firstParamType.IsValueType || firstParamType == typeof(DateTime))
- {
- var msg = message!.MessagePackTo>();
-
- for (var i = 0; i < msg.PostData.Ids.Count; i++)
- {
- //var obj = (string)msg.PostData.Ids[i];
- //if (msg.PostData.Ids[i] is Guid id)
- //{
- // if (id.IsNullOrEmpty()) throw new NullReferenceException($"PostData.Id.IsNullOrEmpty(); Ids: {msg.PostData.Ids}");
- // paramValues[i] = id;
- //}
- //else if (Guid.TryParse(obj, out id))
- //{
- // if (id.IsNullOrEmpty()) throw new NullReferenceException($"PostData.Id.IsNullOrEmpty(); Ids: {msg.PostData.Ids}");
- // paramValues[i] = id;
- //}
- //else if (Enum.TryParse(methodInfoModel.ParameterType, obj, out var enumObj))
- //{
- // paramValues[i] = enumObj;
- //}
- //else paramValues[i] = Convert.ChangeType(obj, methodInfoModel.ParameterType);
-
- var obj = msg.PostData.Ids[i];
- //var config = new MapperConfiguration(cfg =>
- //{
- // cfg.CreateMap(obj.GetType(), methodInfoModel.ParameterType);
- //});
-
- //var mapper = new Mapper(config);
- //paramValues[i] = mapper.Map(obj, methodInfoModel.ParameterType);
-
- //paramValues[i] = obj;
-
- var a = Array.CreateInstance(methodInfoModel.ParamInfos[i].ParameterType, 1);
-
- if (methodInfoModel.ParamInfos[i].ParameterType == typeof(Expression))
- {
- var serializer = new ExpressionSerializer(new JsonSerializer());
- paramValues[i] = serializer.DeserializeText((string)(obj.JsonTo(a.GetType()) as Array)?.GetValue(0)!);
- }
- else paramValues[i] = (obj.JsonTo(a.GetType()) as Array)?.GetValue(0)!;
-
- }
- }
- else paramValues[0] = message!.MessagePackTo>(MessagePackSerializerOptions.Standard).PostDataJson.JsonTo(firstParamType)!;
- }
- else _logger.Debug($"{logText}(); {tagName}");
-
- var responseDataJson = new SignalResponseJsonMessage(messageTag, SignalResponseStatus.Success, methodInfoModel.MethodInfo.InvokeMethod(methodsByDeclaringObject.InstanceObject, paramValues));
- var responseDataJsonKiloBytes = System.Text.Encoding.Unicode.GetByteCount(responseDataJson.ResponseData!) / 1024;
-
- //File.WriteAllText(Path.Combine("h:", $"{requestId}.json"), responseDataJson.ResponseData);
-
- _logger.Info($"[{responseDataJsonKiloBytes}kb] responseData serialized to json");
- await ResponseToCaller(messageTag, responseDataJson, requestId);
-
- return;
- }
-
- _logger.Debug($"Not found dynamic method for the tag! {tagName}");
-
switch (messageTag)
{
case SignalRTags.GetAddress:
@@ -257,54 +104,9 @@ public class DevAdminSignalRHub : Hub, IAcSignalRHubServe
// return;
default:
- _logger.Error($"Server OnReceiveMessage; messageTag not found! {tagName}");
+ Logger.Error($"Server OnReceiveMessage; messageTag not found! {tagName}");
break;
}
- }
- catch (Exception ex)
- {
- _logger.Error($"Server OnReceiveMessage; {ex.Message}; {tagName}", ex);
- }
-
- await ResponseToCaller(messageTag, new SignalResponseJsonMessage(messageTag, SignalResponseStatus.Error), requestId);
+ });
}
-
- protected async Task ResponseToCaller(int messageTag, ISignalRMessage message, int? requestId)
- => await SendMessageToClient(Clients.Caller, messageTag, message, requestId);
-
- public async Task SendMessageToUserId(string userId, int messageTag, ISignalRMessage message, int? requestId)
- => await SendMessageToClient(Clients.User(userId), messageTag, message, requestId);
-
- public async Task SendMessageToConnectionId(string connectionId, int messageTag, ISignalRMessage message, int? requestId)
- => await SendMessageToClient(Clients.Client(Context.ConnectionId), messageTag, message, requestId);
-
- protected async Task SendMessageToClient(ISignalRHubItemServer sendTo, int messageTag, ISignalRMessage message, int? requestId = null)
- {
- var responseDataMessagePack = message.ToMessagePack(ContractlessStandardResolver.Options);
- _logger.Info($"[{(responseDataMessagePack.Length/1024)}kb] Server sending responseDataMessagePack to client; {nameof(requestId)}: {requestId}; ConnectionId: {Context.ConnectionId}; {ConstHelper.NameByValue(messageTag)}");
-
- await sendTo.OnReceiveMessage(messageTag, responseDataMessagePack, requestId);
- }
-
- public async Task SendMessageToGroup(string groupId, int messageTag, string message)
- {
- //await Clients.Group(groupId).Post("", messageTag, message);
- }
-
- //[Conditional("DEBUG")]
- private void LogContextUserNameAndId()
- {
- string? userName = null;
- var userId = Guid.Empty;
-
- if (Context.User != null)
- {
- userName = Context.User.Identity?.Name;
- Guid.TryParse(Context.User.FindFirstValue(ClaimTypes.NameIdentifier), out userId);
- }
-
- if (AcDomain.IsDeveloperVersion) _logger.WarningConditional($"SignalR.Context; userName: {userName}; userId: {userId}");
- else _logger.Debug($"SignalR.Context; userName: {userName}; userId: {userId}");
- }
-
}
\ No newline at end of file
diff --git a/TIAMWebApp/Server/Services/DynamicMethodCallModel.cs b/TIAMWebApp/Server/Services/DynamicMethodCallModel.cs
deleted file mode 100644
index 67e5e11b..00000000
--- a/TIAMWebApp/Server/Services/DynamicMethodCallModel.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using System.Collections.Concurrent;
-using System.Reflection;
-using AyCode.Services.SignalRs;
-
-namespace TIAMWebApp.Server.Services;
-
-public class DynamicMethodCallModel where TAttribute : TagAttribute
-{
- public object InstanceObject { get; init; }
- public ConcurrentDictionary> MethodsByMessageTag { get; init; } = new();
-
-
- public DynamicMethodCallModel(Type instanceObjectType) : this(instanceObjectType, null!)
- {
- }
-
- public DynamicMethodCallModel(Type instanceObjectType, params object[] constructorParams) : this(Activator.CreateInstance(instanceObjectType, constructorParams)!)
- {
- }
-
- public DynamicMethodCallModel(object instanceObject)
- {
- InstanceObject = instanceObject;
-
- foreach (var methodInfo in instanceObject.GetType().GetMethods())
- {
- if (methodInfo.GetCustomAttribute(typeof(TAttribute)) is not TAttribute attribute) continue;
-
- if (MethodsByMessageTag.ContainsKey(attribute.MessageTag))
- throw new Exception($"Multiple SignaRMessageTag! messageTag: {attribute.MessageTag}; methodName: {methodInfo.Name}");
-
- MethodsByMessageTag[attribute.MessageTag] = new MethodInfoModel(attribute, methodInfo!);
- }
- }
-}
\ No newline at end of file
diff --git a/TIAMWebApp/Server/Services/ExtensionMethods.cs b/TIAMWebApp/Server/Services/ExtensionMethods.cs
deleted file mode 100644
index 82746e71..00000000
--- a/TIAMWebApp/Server/Services/ExtensionMethods.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-namespace TIAMWebApp.Server.Services;
-
-public static class ExtensionMethods
-{
- public static object? InvokeMethod(this MethodInfo methodInfo, object obj, params object[]? parameters)
- {
- if (methodInfo.GetCustomAttribute(typeof(AsyncStateMachineAttribute)) is AsyncStateMachineAttribute isAsyncTask)
- {
- dynamic awaitable = methodInfo.Invoke(obj, parameters)!;
- return awaitable.GetAwaiter().GetResult();
- }
-
- return methodInfo.Invoke(obj, parameters);
- }
-}
\ No newline at end of file
diff --git a/TIAMWebApp/Server/Services/MethodInfoModel.cs b/TIAMWebApp/Server/Services/MethodInfoModel.cs
deleted file mode 100644
index decf6fd3..00000000
--- a/TIAMWebApp/Server/Services/MethodInfoModel.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using System.Reflection;
-using AyCode.Services.SignalRs;
-
-namespace TIAMWebApp.Server.Services;
-
-public class MethodInfoModel where TAttribute : TagAttribute
-{
- public ParameterInfo[]? ParamInfos { get; init; } = null;
- public TAttribute Attribute { get; init; }
- public MethodInfo MethodInfo { get; init; }
-
- public MethodInfoModel(TAttribute attribute, MethodInfo methodInfo)
- {
- Attribute = attribute;
- MethodInfo = methodInfo;
-
- var parameters = methodInfo.GetParameters();
-
- //if (parameters.Length > 1)
- // throw new Exception("MethodInfoModel; parameters.Length > 1");
-
- ParamInfos = parameters;
- }
-}
\ No newline at end of file
diff --git a/TIAMWebApp/Shared/Interfaces/IAcWebSessionServiceClient.cs b/TIAMWebApp/Shared/Interfaces/IAcWebSessionServiceClient.cs
new file mode 100644
index 00000000..b6f132b8
--- /dev/null
+++ b/TIAMWebApp/Shared/Interfaces/IAcWebSessionServiceClient.cs
@@ -0,0 +1,20 @@
+using System.Net;
+using TIAM.Models;
+using TIAMWebApp.Shared.Application.Models;
+
+namespace TIAMWebApp.Shared.Application.Interfaces;
+
+public interface IAcWebSessionServiceClient
+{
+ public string? SessionId { get; set; }
+
+ public SiteViewModel SiteViewModel { get; }
+
+ public UserSessionModel? User { get; set; }
+ public IPAddress? IpAddress { get; set; }
+ public bool IsAuthenticated { get; set; }
+ public bool IsDevAdmin { get; set; }
+ public bool IsSysAdmin { get; set; }
+
+ public Task ClearAll();
+}
\ No newline at end of file
diff --git a/TIAMWebApp/Shared/Interfaces/ISessionService.cs b/TIAMWebApp/Shared/Interfaces/ISessionService.cs
deleted file mode 100644
index 0bc60780..00000000
--- a/TIAMWebApp/Shared/Interfaces/ISessionService.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System.Net;
-using TIAM.Entities.Products;
-using TIAM.Models;
-using TIAMWebApp.Shared.Application.Models;
-
-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; }
- public bool HasCompany { get; set; }
- public bool IsDriver { get; set; }
- public bool IsDevAdmin { get; set; }
- public bool IsSysAdmin { get; set; }
- public List GetHotels();
- public Guid DriverPersmissionId { get; set; }
- public void ClearAll();
- }
-}
diff --git a/TIAMWebApp/Shared/Interfaces/ISessionServiceClient.cs b/TIAMWebApp/Shared/Interfaces/ISessionServiceClient.cs
new file mode 100644
index 00000000..ef70f17e
--- /dev/null
+++ b/TIAMWebApp/Shared/Interfaces/ISessionServiceClient.cs
@@ -0,0 +1,13 @@
+using TIAM.Entities.Products;
+
+namespace TIAMWebApp.Shared.Application.Interfaces
+{
+ public interface ISessionServiceClient : IAcWebSessionServiceClient
+ {
+ public bool HasCompany { get; set; }
+ public bool IsDriver { get; set; }
+
+ public List GetHotels();
+ public Guid DriverPersmissionId { get; set; }
+ }
+}
diff --git a/TIAMWebApp/Shared/Interfaces/IUserDataService.cs b/TIAMWebApp/Shared/Interfaces/IUserDataService.cs
index 72cbd3dd..be066281 100644
--- a/TIAMWebApp/Shared/Interfaces/IUserDataService.cs
+++ b/TIAMWebApp/Shared/Interfaces/IUserDataService.cs
@@ -5,7 +5,8 @@ using TIAMWebApp.Shared.Application.Models.PageModels;
namespace TIAMWebApp.Shared.Application.Interfaces
{
public interface IUserDataService
- {
+ {
+ public Task SignOut();
public Task IsLoggedInAsync(Guid id);
public Task AuthenticateUser(LoginModel loginModel);
diff --git a/TIAMWebApp/Shared/Services/AcWebSessionServiceClientBase.cs b/TIAMWebApp/Shared/Services/AcWebSessionServiceClientBase.cs
new file mode 100644
index 00000000..7a0f02a2
--- /dev/null
+++ b/TIAMWebApp/Shared/Services/AcWebSessionServiceClientBase.cs
@@ -0,0 +1,36 @@
+using System.Net;
+using AyCode.Interfaces.StorageHandlers;
+using Microsoft.AspNetCore.Components.Authorization;
+using TIAM.Models;
+using TIAMWebApp.Shared.Application.Interfaces;
+using TIAMWebApp.Shared.Application.Models;
+
+namespace TIAMWebApp.Shared.Application.Services;
+
+public abstract class AcWebSessionServiceClientBase(ISecureStorageHandler secureStorageHandler, AuthenticationStateProvider authStateProvider) : IAcWebSessionServiceClient
+{
+ 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 IsDevAdmin { get; set; } = false;
+ public bool IsSysAdmin { get; set; } = false;
+
+
+ public virtual async Task ClearAll()
+ {
+ await secureStorageHandler.ClearAllSecureStorageAsync();
+ await authStateProvider.GetAuthenticationStateAsync();
+
+ SessionId = string.Empty;
+ User = null;
+ IpAddress = null;
+ IsAuthenticated = false;
+ IsDevAdmin = false;
+ IsSysAdmin = false;
+
+ SiteViewModel.ClearAll();
+ }
+}
\ No newline at end of file
diff --git a/TIAMWebApp/Shared/Services/SessionServiceClientBase.cs b/TIAMWebApp/Shared/Services/SessionServiceClientBase.cs
index d5014e7f..a9a681f6 100644
--- a/TIAMWebApp/Shared/Services/SessionServiceClientBase.cs
+++ b/TIAMWebApp/Shared/Services/SessionServiceClientBase.cs
@@ -1,24 +1,20 @@
-using System.Net;
+using AyCode.Core.Extensions;
+using AyCode.Interfaces.StorageHandlers;
+using AyCode.Utils.Extensions;
+using Microsoft.AspNetCore.Components.Authorization;
+using Newtonsoft.Json;
using TIAM.Core.Enums;
using TIAM.Entities.Products;
-using TIAM.Models;
using TIAMWebApp.Shared.Application.Interfaces;
-using TIAMWebApp.Shared.Application.Models;
+using TIAMWebApp.Shared.Application.Models.ClientSide;
namespace TIAMWebApp.Shared.Application.Services;
-public abstract class SessionServiceClientBase : ISessionService
+public abstract class SessionServiceClientBase(ISecureStorageHandler secureStorageHandler, AuthenticationStateProvider authStateProvider)
+ : AcWebSessionServiceClientBase(secureStorageHandler, authStateProvider), ISessionServiceClient
{
- 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;
@@ -27,18 +23,12 @@ public abstract class SessionServiceClientBase : ISessionService
return User != null ? User.UserModelDto.Products.Where(x => x.ProductType == ProductType.Hotel).ToList() : [];
}
- public virtual void ClearAll()
+ public override async Task ClearAll()
{
- SessionId = string.Empty;
- User = null;
- IPAddress = null;
- IsAuthenticated = false;
HasCompany = false;
IsDriver = false;
- IsDevAdmin = false;
- IsSysAdmin = false;
DriverPersmissionId = Guid.Empty;
- SiteViewModel.ClearAll();
+ await base.ClearAll();
}
}
\ No newline at end of file
diff --git a/TIAMWebApp/Shared/Services/UserDataServiceClientBase.cs b/TIAMWebApp/Shared/Services/UserDataServiceClientBase.cs
index 715d576d..3099cec9 100644
--- a/TIAMWebApp/Shared/Services/UserDataServiceClientBase.cs
+++ b/TIAMWebApp/Shared/Services/UserDataServiceClientBase.cs
@@ -4,6 +4,7 @@ using System.Text.Json;
using AyCode.Core.Extensions;
using AyCode.Interfaces.StorageHandlers;
using AyCode.Services.Loggers;
+using AyCode.Utils.Extensions;
using Microsoft.IdentityModel.Tokens;
using Newtonsoft.Json;
using TIAM.Models.Dtos.Users;
@@ -22,12 +23,12 @@ public abstract class UserDataServiceClientBase : IUserDataService
protected readonly LoggerClient Logger;
protected readonly AdminSignalRClient AdminSignalRClient;
- protected readonly ISessionService SessionService;
+ protected readonly ISessionServiceClient SessionService;
protected readonly ISecureStorageHandler SecureStorageHandler;
protected readonly IServiceProviderDataService ServiceProviderDataService;
- protected UserDataServiceClientBase(HttpClient http, AdminSignalRClient adminSignalRClient, ISessionService sessionService, ISecureStorageHandler secureStorageHandler, IServiceProviderDataService serviceProviderDataService, IEnumerable logWriters)
+ protected UserDataServiceClientBase(HttpClient http, AdminSignalRClient adminSignalRClient, ISessionServiceClient sessionService, ISecureStorageHandler secureStorageHandler, IServiceProviderDataService serviceProviderDataService, IEnumerable logWriters)
{
Http = http;
AdminSignalRClient = adminSignalRClient;
@@ -40,6 +41,21 @@ public abstract class UserDataServiceClientBase : IUserDataService
}
+ public virtual async Task SignOut()
+ {
+ var userDetailsStr = await SecureStorageHandler.GetFromSecureStorageAsync(nameof(Setting.UserBasicDetails));
+
+ if (!string.IsNullOrEmpty(userDetailsStr))
+ {
+ var userBasicDetail = JsonConvert.DeserializeObject(userDetailsStr);
+
+ if (userBasicDetail != null && !userBasicDetail.RefreshToken.IsNullOrWhiteSpace())
+ await Logout(userBasicDetail.RefreshToken);
+ }
+
+ await SessionService.ClearAll();
+ }
+
public async Task IsLoggedInAsync(Guid id)
{
//api call to get user
diff --git a/TIAMWebApp/Shared/TIAMWebApp.Shared.Application.csproj b/TIAMWebApp/Shared/TIAMWebApp.Shared.Application.csproj
index 5d2426bb..6a544f7b 100644
--- a/TIAMWebApp/Shared/TIAMWebApp.Shared.Application.csproj
+++ b/TIAMWebApp/Shared/TIAMWebApp.Shared.Application.csproj
@@ -63,5 +63,8 @@
..\..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Services.dll
+
+ ..\..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Utils.dll
+
diff --git a/Tiam.Services.Client.Tests/Tiam.Services.Client.Tests.csproj b/Tiam.Services.Client.Tests/Tiam.Services.Client.Tests.csproj
index 3717880d..3b49387a 100644
--- a/Tiam.Services.Client.Tests/Tiam.Services.Client.Tests.csproj
+++ b/Tiam.Services.Client.Tests/Tiam.Services.Client.Tests.csproj
@@ -15,8 +15,8 @@
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
+
+