Refactoring Login, SignalR, etc...
This commit is contained in:
parent
f6bc09c661
commit
da24b45f5d
|
|
@ -30,8 +30,8 @@
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="8.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="8.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.1" />
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
|
||||||
<PackageReference Include="MSTest.TestAdapter" Version="3.6.1" />
|
<PackageReference Include="MSTest.TestAdapter" Version="3.6.2" />
|
||||||
<PackageReference Include="MSTest.TestFramework" Version="3.6.1" />
|
<PackageReference Include="MSTest.TestFramework" Version="3.6.2" />
|
||||||
<PackageReference Include="coverlet.collector" Version="6.0.2">
|
<PackageReference Include="coverlet.collector" Version="6.0.2">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
|
|
||||||
|
|
@ -28,8 +28,8 @@
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="8.0.10" />
|
<PackageReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="8.0.10" />
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
|
||||||
<PackageReference Include="MSTest.TestAdapter" Version="3.6.1" />
|
<PackageReference Include="MSTest.TestAdapter" Version="3.6.2" />
|
||||||
<PackageReference Include="MSTest.TestFramework" Version="3.6.1" />
|
<PackageReference Include="MSTest.TestFramework" Version="3.6.2" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
||||||
|
|
@ -47,31 +47,31 @@ namespace TIAMMobileApp
|
||||||
|
|
||||||
builder.Services.AddDevExpressBlazor(configure => configure.BootstrapVersion = BootstrapVersion.v5);
|
builder.Services.AddDevExpressBlazor(configure => configure.BootstrapVersion = BootstrapVersion.v5);
|
||||||
|
|
||||||
builder.Services.AddScoped<IWeatherForecastService, WeatherForecastService>();
|
builder.Services.AddSingleton<IWeatherForecastService, WeatherForecastService>();
|
||||||
builder.Services.AddScoped<ITransferDataService, TransferDataService>();
|
builder.Services.AddSingleton<ITransferDataService, TransferDataService>();
|
||||||
|
|
||||||
builder.Services.AddSingleton<IAcLogWriterClientBase, SignaRClientLogItemWriter>();
|
builder.Services.AddSingleton<IAcLogWriterClientBase, SignaRClientLogItemWriter>();
|
||||||
|
|
||||||
builder.Services.AddScoped<IPopulationStructureDataProvider, PopulationStructureDataProvider>();
|
builder.Services.AddSingleton<IPopulationStructureDataProvider, PopulationStructureDataProvider>();
|
||||||
builder.Services.AddScoped<ISupplierService, SupplierService>();
|
builder.Services.AddSingleton<ISupplierService, SupplierService>();
|
||||||
builder.Services.AddScoped<IUserDataService, UserDataServiceMobile>();
|
builder.Services.AddSingleton<IUserDataService, UserDataServiceMobile>();
|
||||||
builder.Services.AddScoped<ISecureStorageHandler, SecureStorageHandler>();
|
builder.Services.AddSingleton<ISecureStorageHandler, SecureStorageHandler>();
|
||||||
builder.Services.AddSingleton<ISessionService, SessionServiceMobile>();
|
builder.Services.AddSingleton<ISessionServiceClient, SessionServiceMobile>();
|
||||||
builder.Services.AddSingleton<IComponentUpdateService, ComponentUpdateServiceMobile>();
|
builder.Services.AddSingleton<IComponentUpdateService, ComponentUpdateServiceMobile>();
|
||||||
builder.Services.AddScoped<IServiceProviderDataService, ServiceProviderDataService>();
|
builder.Services.AddSingleton<IServiceProviderDataService, ServiceProviderDataService>();
|
||||||
builder.Services.AddScoped<IClientNoticeSenderService, ClientNoticeSenderService>();
|
builder.Services.AddSingleton<IClientNoticeSenderService, ClientNoticeSenderService>();
|
||||||
builder.Services.AddScoped<IWizardProcessor, WizardProcessor>();
|
builder.Services.AddSingleton<IWizardProcessor, WizardProcessor>();
|
||||||
builder.Services.AddScoped<IImageDataService, ImageDataService>();
|
builder.Services.AddSingleton<IImageDataService, ImageDataService>();
|
||||||
builder.Services.AddSingleton(x => new ResourceManager("TIAMWebApp.Shared.Application.Resources", typeof(Main).Assembly));
|
builder.Services.AddSingleton(x => new ResourceManager("TIAMWebApp.Shared.Application.Resources", typeof(Main).Assembly));
|
||||||
|
|
||||||
builder.Services.AddSingleton<AdminSignalRClient>();
|
builder.Services.AddSingleton<AdminSignalRClient>();
|
||||||
|
|
||||||
builder.Services.AddSingleton<SignalRService>();
|
builder.Services.AddSingleton<SignalRService>();
|
||||||
builder.Services.AddSingleton<SumupService>();
|
builder.Services.AddSingleton<SumupService>();
|
||||||
builder.Services.AddScoped<AuthenticationStateProvider, CustomAuthStateProvider>();
|
builder.Services.AddSingleton<AuthenticationStateProvider, CustomAuthStateProvider>();
|
||||||
builder.Services.AddScoped<ExchangeRateService>();
|
builder.Services.AddSingleton<ExchangeRateService>();
|
||||||
builder.Services.AddScoped<SmartyStreetsService>();
|
builder.Services.AddSingleton<SmartyStreetsService>();
|
||||||
builder.Services.AddScoped<GooglePlacesService>();
|
builder.Services.AddSingleton<GooglePlacesService>();
|
||||||
builder.Services.AddSingleton<PageHistoryState>();
|
builder.Services.AddSingleton<PageHistoryState>();
|
||||||
builder.Services.AddAuthorizationCore();
|
builder.Services.AddAuthorizationCore();
|
||||||
builder.Services.Configure<AnimationOptions>(Guid.NewGuid().ToString(), c => { });
|
builder.Services.Configure<AnimationOptions>(Guid.NewGuid().ToString(), c => { });
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
using System.Net;
|
using AyCode.Interfaces.StorageHandlers;
|
||||||
|
using Microsoft.AspNetCore.Components.Authorization;
|
||||||
|
using System.Net;
|
||||||
using TIAM.Core.Consts;
|
using TIAM.Core.Consts;
|
||||||
using TIAM.Entities.Products;
|
using TIAM.Entities.Products;
|
||||||
using TIAM.Entities.Users;
|
using TIAM.Entities.Users;
|
||||||
|
|
@ -10,16 +12,17 @@ using static System.Runtime.InteropServices.JavaScript.JSType;
|
||||||
|
|
||||||
namespace TIAMMobileApp.Services
|
namespace TIAMMobileApp.Services
|
||||||
{
|
{
|
||||||
public class SessionServiceMobile : SessionServiceClientBase
|
public class SessionServiceMobile(ISecureStorageHandler secureStorageHandler, AuthenticationStateProvider authStateProvider)
|
||||||
|
: SessionServiceClientBase(secureStorageHandler, authStateProvider)
|
||||||
{
|
{
|
||||||
public override List<Product> GetHotels()
|
public override List<Product> GetHotels()
|
||||||
{
|
{
|
||||||
return base.GetHotels();
|
return base.GetHotels();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void ClearAll()
|
public override Task ClearAll()
|
||||||
{
|
{
|
||||||
base.ClearAll();
|
return base.ClearAll();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ using TIAMWebApp.Shared.Application.Utility;
|
||||||
|
|
||||||
namespace TIAMMobileApp.Services
|
namespace TIAMMobileApp.Services
|
||||||
{
|
{
|
||||||
public class UserDataServiceMobile(HttpClient http, AdminSignalRClient adminSignalRClient, ISessionService sessionService, ISecureStorageHandler secureStorageHandler, IServiceProviderDataService serviceProviderDataService, IEnumerable<IAcLogWriterClientBase> logWriters)
|
public class UserDataServiceMobile(HttpClient http, AdminSignalRClient adminSignalRClient, ISessionServiceClient sessionService, ISecureStorageHandler secureStorageHandler, IServiceProviderDataService serviceProviderDataService, IEnumerable<IAcLogWriterClientBase> logWriters)
|
||||||
: UserDataServiceClientBase(http, adminSignalRClient, sessionService, secureStorageHandler, serviceProviderDataService, logWriters);
|
: UserDataServiceClientBase(http, adminSignalRClient, sessionService, secureStorageHandler, serviceProviderDataService, logWriters);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@
|
||||||
@using AyCode.Core.Helpers
|
@using AyCode.Core.Helpers
|
||||||
@using AyCode.Core.Loggers
|
@using AyCode.Core.Loggers
|
||||||
@using AyCode.Services.Loggers
|
@using AyCode.Services.Loggers
|
||||||
|
@using AyCode.Utils.Extensions
|
||||||
@using TIAM.Core.Loggers
|
@using TIAM.Core.Loggers
|
||||||
@using TIAM.Models
|
@using TIAM.Models
|
||||||
@using TIAM.Services
|
@using TIAM.Services
|
||||||
|
|
@ -26,7 +27,7 @@
|
||||||
@inject IUserDataService UserDataService
|
@inject IUserDataService UserDataService
|
||||||
@inject IServiceProviderDataService ServiceProviderDataService
|
@inject IServiceProviderDataService ServiceProviderDataService
|
||||||
@inject ISecureStorageHandler SecureStorageHandler
|
@inject ISecureStorageHandler SecureStorageHandler
|
||||||
@inject ISessionService sessionService;
|
@inject ISessionServiceClient sessionService;
|
||||||
@inject HttpClient http;
|
@inject HttpClient http;
|
||||||
@inject IComponentUpdateService ComponentUpdateService
|
@inject IComponentUpdateService ComponentUpdateService
|
||||||
@inject AuthenticationStateProvider AuthStateProvider
|
@inject AuthenticationStateProvider AuthStateProvider
|
||||||
|
|
@ -213,17 +214,22 @@
|
||||||
|
|
||||||
private async Task SignOut()
|
private async Task SignOut()
|
||||||
{
|
{
|
||||||
_logger.Info("SignOut called");
|
_logger.Info("Applaunch->SignOut called");
|
||||||
|
|
||||||
var userBasicDetail = userDetailsStr.JsonTo<UserBasicDetails>();
|
// var userBasicDetail = userDetailsStr.JsonTo<UserBasicDetails>();
|
||||||
|
|
||||||
await AuthStateProvider.GetAuthenticationStateAsync();
|
// if (userBasicDetail != null && !userBasicDetail.RefreshToken.IsNullOrWhiteSpace())
|
||||||
await SecureStorageHandler.ClearAllSecureStorageAsync();
|
// await UserDataService.Logout(userBasicDetail.RefreshToken);
|
||||||
|
|
||||||
sessionService.ClearAll();
|
|
||||||
ComponentUpdateService.CallRequestRefreshAll();
|
|
||||||
|
|
||||||
UserDataService.Logout(userBasicDetail?.RefreshToken).Forget();
|
// await SecureStorageHandler.ClearAllSecureStorageAsync();
|
||||||
|
// await AuthStateProvider.GetAuthenticationStateAsync();
|
||||||
|
|
||||||
|
//sessionService.ClearAll();
|
||||||
|
|
||||||
|
await UserDataService.SignOut();
|
||||||
|
|
||||||
|
//navigationManager.NavigateTo("/");
|
||||||
|
ComponentUpdateService.CallRequestRefreshAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
CultureInfo Culture
|
CultureInfo Culture
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
@page "/auction"
|
@page "/auction"
|
||||||
@using TIAMSharedUI.Pages.Components
|
@using TIAMSharedUI.Pages.Components
|
||||||
@using TIAMWebApp.Shared.Application.Interfaces;
|
@using TIAMWebApp.Shared.Application.Interfaces;
|
||||||
@inject ISessionService sessionService
|
@inject ISessionServiceClient sessionService
|
||||||
|
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<h1>Auction</h1>
|
<h1>Auction</h1>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
@using TIAMWebApp.Shared.Application.Interfaces;
|
@using TIAMWebApp.Shared.Application.Interfaces;
|
||||||
@using TIAMWebApp.Shared.Application.Models.PageModels;
|
@using TIAMWebApp.Shared.Application.Models.PageModels;
|
||||||
@using TIAMWebApp.Shared.Application.Models;
|
@using TIAMWebApp.Shared.Application.Models;
|
||||||
@inject ISessionService sessionService;
|
@inject ISessionServiceClient sessionService;
|
||||||
|
|
||||||
<EditForm Model="@auctionBidModel" OnValidSubmit="GoToNextStep">
|
<EditForm Model="@auctionBidModel" OnValidSubmit="GoToNextStep">
|
||||||
<DataAnnotationsValidator />
|
<DataAnnotationsValidator />
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
@using TIAMWebApp.Shared.Application.Models.PageModels;
|
@using TIAMWebApp.Shared.Application.Models.PageModels;
|
||||||
@using TIAMWebApp.Shared.Application.Models;
|
@using TIAMWebApp.Shared.Application.Models;
|
||||||
@using TIAMWebApp.Shared.Application.Interfaces;
|
@using TIAMWebApp.Shared.Application.Interfaces;
|
||||||
@inject ISessionService sessionService;
|
@inject ISessionServiceClient sessionService;
|
||||||
|
|
||||||
<EditForm Model="@auctionBidModel" OnValidSubmit="GoToNextStep">
|
<EditForm Model="@auctionBidModel" OnValidSubmit="GoToNextStep">
|
||||||
<DataAnnotationsValidator />
|
<DataAnnotationsValidator />
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ namespace TIAMSharedUI.Pages.Components
|
||||||
public required IEnumerable<IAcLogWriterClientBase> LogWriters { get; set; }
|
public required IEnumerable<IAcLogWriterClientBase> LogWriters { get; set; }
|
||||||
|
|
||||||
[Inject]
|
[Inject]
|
||||||
public ISessionService sessionService { get; set; }
|
public ISessionServiceClient sessionService { get; set; }
|
||||||
public bool IsLoggedIn = false;
|
public bool IsLoggedIn = false;
|
||||||
[Inject]
|
[Inject]
|
||||||
public IComponentUpdateService componentUpdateService { get; set; }
|
public IComponentUpdateService componentUpdateService { get; set; }
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
@using TIAMWebApp.Shared.Application.Interfaces
|
@using TIAMWebApp.Shared.Application.Interfaces
|
||||||
@using TIAMWebApp.Shared.Application.Utility
|
@using TIAMWebApp.Shared.Application.Utility
|
||||||
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
||||||
@inject ISessionService _sessionService
|
@inject ISessionServiceClient _sessionService
|
||||||
|
|
||||||
@if (isEditing)
|
@if (isEditing)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ namespace TIAMSharedUI.Pages.Components
|
||||||
IStringLocalizer<TIAMResources> localizer { get; set; }
|
IStringLocalizer<TIAMResources> localizer { get; set; }
|
||||||
|
|
||||||
[Inject]
|
[Inject]
|
||||||
public ISessionService sessionService { get; set; }
|
public ISessionServiceClient sessionService { get; set; }
|
||||||
|
|
||||||
public Dictionary<int, Guid> FormSteps { get; set; } = new Dictionary<int, Guid>();
|
public Dictionary<int, Guid> FormSteps { get; set; } = new Dictionary<int, Guid>();
|
||||||
public int CurrentStep { get; set; } = 0;
|
public int CurrentStep { get; set; } = 0;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
@using TIAMWebApp.Shared.Application.Interfaces;
|
@using TIAMWebApp.Shared.Application.Interfaces;
|
||||||
@using TIAMWebApp.Shared.Application.Models;
|
@using TIAMWebApp.Shared.Application.Models;
|
||||||
@inject ISessionService sessionService;
|
@inject ISessionServiceClient sessionService;
|
||||||
|
|
||||||
<EditForm Model="@auctionBidModel" OnValidSubmit="GoToNextStep">
|
<EditForm Model="@auctionBidModel" OnValidSubmit="GoToNextStep">
|
||||||
<DataAnnotationsValidator />
|
<DataAnnotationsValidator />
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
@using TIAMWebApp.Shared.Application.Models;
|
@using TIAMWebApp.Shared.Application.Models;
|
||||||
@using TIAMWebApp.Shared.Application.Interfaces;
|
@using TIAMWebApp.Shared.Application.Interfaces;
|
||||||
@inject ISessionService sessionService;
|
@inject ISessionServiceClient sessionService;
|
||||||
|
|
||||||
<EditForm Model="@auctionBidModel" OnValidSubmit="GoToNextStep">
|
<EditForm Model="@auctionBidModel" OnValidSubmit="GoToNextStep">
|
||||||
<DataAnnotationsValidator />
|
<DataAnnotationsValidator />
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
@inject IUserDataService UserDataService;
|
@inject IUserDataService UserDataService;
|
||||||
@inject IJSRuntime jsRuntime;
|
@inject IJSRuntime jsRuntime;
|
||||||
@inject ISecureStorageHandler SecureStorageHandler
|
@inject ISecureStorageHandler SecureStorageHandler
|
||||||
@inject ISessionService sessionService;
|
@inject ISessionServiceClient sessionService;
|
||||||
@inject IStringLocalizer<MyResources> localizer;
|
@inject IStringLocalizer<MyResources> localizer;
|
||||||
@inject NavigationManager navManager
|
@inject NavigationManager navManager
|
||||||
@inject IAcLogWriterClientBase BrowserConsoleLogWriter
|
@inject IAcLogWriterClientBase BrowserConsoleLogWriter
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
@inject IUserDataService UserDataService;
|
@inject IUserDataService UserDataService;
|
||||||
@inject IJSRuntime jsRuntime;
|
@inject IJSRuntime jsRuntime;
|
||||||
@inject ISecureStorageHandler SecureStorageHandler
|
@inject ISecureStorageHandler SecureStorageHandler
|
||||||
@inject ISessionService sessionService;
|
@inject ISessionServiceClient sessionService;
|
||||||
@inject IStringLocalizer<TIAMResources> localizer;
|
@inject IStringLocalizer<TIAMResources> localizer;
|
||||||
@inject NavigationManager navManager
|
@inject NavigationManager navManager
|
||||||
@inject IAcLogWriterClientBase BrowserConsoleLogWriter
|
@inject IAcLogWriterClientBase BrowserConsoleLogWriter
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ namespace TIAMSharedUI.Pages
|
||||||
[Inject]
|
[Inject]
|
||||||
public AuthenticationStateProvider AuthStateProvider { get; set; }
|
public AuthenticationStateProvider AuthStateProvider { get; set; }
|
||||||
[Inject] public IComponentUpdateService componentUpdateService { 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
|
//fill loginmodel with fake but valid data
|
||||||
|
|
||||||
//LoginModel loginModel = new();
|
//LoginModel loginModel = new();
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
@using AyCode.Core.Extensions
|
@using AyCode.Core.Extensions
|
||||||
@layout AdminLayout
|
@layout AdminLayout
|
||||||
@inject IPopulationStructureDataProvider DataProvider
|
@inject IPopulationStructureDataProvider DataProvider
|
||||||
@inject ISessionService SessionService
|
@inject ISessionServiceClient SessionService
|
||||||
@inject IUserDataService UserDataService
|
@inject IUserDataService UserDataService
|
||||||
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
||||||
@inject AdminSignalRClient _adminSignalRClient
|
@inject AdminSignalRClient _adminSignalRClient
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ namespace TIAMSharedUI.Pages
|
||||||
public IStringLocalizer<MyResources>? localizer { get; set; }
|
public IStringLocalizer<MyResources>? localizer { get; set; }
|
||||||
|
|
||||||
[Inject]
|
[Inject]
|
||||||
public ISessionService SessionService { get; set; }
|
public ISessionServiceClient SessionService { get; set; }
|
||||||
|
|
||||||
public string Language { get; set; } = "en-US";
|
public string Language { get; set; } = "en-US";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
@layout AdminLayout
|
@layout AdminLayout
|
||||||
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
||||||
@inject IStringLocalizer<TIAMResources> Localizer
|
@inject IStringLocalizer<TIAMResources> Localizer
|
||||||
@inject ISessionService SessionService
|
@inject ISessionServiceClient SessionService
|
||||||
@inject IWizardProcessor WizardProcessor
|
@inject IWizardProcessor WizardProcessor
|
||||||
@inject IUserDataService UserDataService
|
@inject IUserDataService UserDataService
|
||||||
<PageTitle>Car list</PageTitle>
|
<PageTitle>Car list</PageTitle>
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@
|
||||||
@inject IStringLocalizer<TIAMResources> localizer
|
@inject IStringLocalizer<TIAMResources> localizer
|
||||||
@inject IWizardProcessor wizardProcessor
|
@inject IWizardProcessor wizardProcessor
|
||||||
@inject ITransferDataService transferDataService;
|
@inject ITransferDataService transferDataService;
|
||||||
@inject ISessionService sessionService;
|
@inject ISessionServiceClient sessionService;
|
||||||
@inject AdminSignalRClient AdminSignalRClient;
|
@inject AdminSignalRClient AdminSignalRClient;
|
||||||
<PageTitle>Transfers</PageTitle>
|
<PageTitle>Transfers</PageTitle>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ namespace TIAMSharedUI.Pages.User.Hotels
|
||||||
|
|
||||||
[Inject] IEnumerable<IAcLogWriterClientBase> LogWriters { get; set; }
|
[Inject] IEnumerable<IAcLogWriterClientBase> LogWriters { get; set; }
|
||||||
|
|
||||||
[Inject] ISessionService SessionService { get; set; }
|
[Inject] ISessionServiceClient SessionService { get; set; }
|
||||||
|
|
||||||
private LoggerClient<HotelComponent> _logger;
|
private LoggerClient<HotelComponent> _logger;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@
|
||||||
@inject IStringLocalizer<TIAMResources> localizer
|
@inject IStringLocalizer<TIAMResources> localizer
|
||||||
@inject IWizardProcessor wizardProcessor
|
@inject IWizardProcessor wizardProcessor
|
||||||
@inject ITransferDataService transferDataService
|
@inject ITransferDataService transferDataService
|
||||||
@inject ISessionService sessionService
|
@inject ISessionServiceClient sessionService
|
||||||
@inject AdminSignalRClient AdminSignalRClient;
|
@inject AdminSignalRClient AdminSignalRClient;
|
||||||
<PageTitle>Transfers</PageTitle>
|
<PageTitle>Transfers</PageTitle>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@
|
||||||
@inject IStringLocalizer<TIAMResources> localizer
|
@inject IStringLocalizer<TIAMResources> localizer
|
||||||
@inject IWizardProcessor wizardProcessor
|
@inject IWizardProcessor wizardProcessor
|
||||||
@inject ITransferDataService transferDataService
|
@inject ITransferDataService transferDataService
|
||||||
@inject ISessionService sessionService
|
@inject ISessionServiceClient sessionService
|
||||||
@inject AdminSignalRClient AdminSignalRClient;
|
@inject AdminSignalRClient AdminSignalRClient;
|
||||||
<PageTitle>Transfers</PageTitle>
|
<PageTitle>Transfers</PageTitle>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
@inject IStringLocalizer<TIAMResources> localizer
|
@inject IStringLocalizer<TIAMResources> localizer
|
||||||
@inject IServiceProviderDataService serviceProviderDataService
|
@inject IServiceProviderDataService serviceProviderDataService
|
||||||
@inject IUserDataService userDataService
|
@inject IUserDataService userDataService
|
||||||
@inject ISessionService sessionService
|
@inject ISessionServiceClient sessionService
|
||||||
@inject AdminSignalRClient AdminSignalRClient;
|
@inject AdminSignalRClient AdminSignalRClient;
|
||||||
<PageTitle>Admin - Companies</PageTitle>
|
<PageTitle>Admin - Companies</PageTitle>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
@using TIAMSharedUI.Pages.User.SysAdmins
|
@using TIAMSharedUI.Pages.User.SysAdmins
|
||||||
@using TIAMWebApp.Shared.Application.Interfaces
|
@using TIAMWebApp.Shared.Application.Interfaces
|
||||||
@using TIAMWebApp.Shared.Application.Services
|
@using TIAMWebApp.Shared.Application.Services
|
||||||
@inject ISessionService sessionService;
|
@inject ISessionServiceClient sessionService;
|
||||||
@inject AdminSignalRClient AdminSignalRClient;
|
@inject AdminSignalRClient AdminSignalRClient;
|
||||||
@inject IJSRuntime jsRuntime
|
@inject IJSRuntime jsRuntime
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
@layout AdminLayout
|
@layout AdminLayout
|
||||||
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
||||||
@inject IStringLocalizer<TIAMResources> localizer
|
@inject IStringLocalizer<TIAMResources> localizer
|
||||||
@inject ISessionService SessionService
|
@inject ISessionServiceClient SessionService
|
||||||
@inject IServiceProviderDataService ServiceProviderDataService
|
@inject IServiceProviderDataService ServiceProviderDataService
|
||||||
@inject AdminSignalRClient AdminSignalRClient;
|
@inject AdminSignalRClient AdminSignalRClient;
|
||||||
<PageTitle>User permissions</PageTitle>
|
<PageTitle>User permissions</PageTitle>
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
@inject IStringLocalizer<TIAMResources> localizer
|
@inject IStringLocalizer<TIAMResources> localizer
|
||||||
@inject IServiceProviderDataService serviceProviderDataService
|
@inject IServiceProviderDataService serviceProviderDataService
|
||||||
@inject IUserDataService userDataService
|
@inject IUserDataService userDataService
|
||||||
@inject ISessionService sessionService
|
@inject ISessionServiceClient sessionService
|
||||||
@inject AdminSignalRClient AdminSignalRClient;
|
@inject AdminSignalRClient AdminSignalRClient;
|
||||||
<PageTitle>Admin - Companies</PageTitle>
|
<PageTitle>Admin - Companies</PageTitle>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
@layout AdminLayout
|
@layout AdminLayout
|
||||||
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
||||||
@inject IStringLocalizer<TIAMResources> Localizer
|
@inject IStringLocalizer<TIAMResources> Localizer
|
||||||
@inject ISessionService SessionService
|
@inject ISessionServiceClient SessionService
|
||||||
|
|
||||||
<PageTitle>User permissions</PageTitle>
|
<PageTitle>User permissions</PageTitle>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
@using TIAM.Core.Consts
|
@using TIAM.Core.Consts
|
||||||
@layout AdminLayout
|
@layout AdminLayout
|
||||||
@inject IStringLocalizer<TIAMResources> Localizer
|
@inject IStringLocalizer<TIAMResources> Localizer
|
||||||
@inject ISessionService SessionService
|
@inject ISessionServiceClient SessionService
|
||||||
@using TIAMSharedUI.Shared.Components.BaseComponents
|
@using TIAMSharedUI.Shared.Components.BaseComponents
|
||||||
@inherits UserBasePageComponent
|
@inherits UserBasePageComponent
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@
|
||||||
@inherits UserBasePageComponent
|
@inherits UserBasePageComponent
|
||||||
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
||||||
@inject AdminSignalRClient AdminSignalRClient;
|
@inject AdminSignalRClient AdminSignalRClient;
|
||||||
@inject ISessionService sessionService
|
@inject ISessionServiceClient sessionService
|
||||||
@inject IComponentUpdateService ComponentUpdateService
|
@inject IComponentUpdateService ComponentUpdateService
|
||||||
|
|
||||||
<MessageDetailGrid CssClass="my-grid" @ref="_messageGrid"
|
<MessageDetailGrid CssClass="my-grid" @ref="_messageGrid"
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@
|
||||||
@inject IStringLocalizer<TIAMResources> localizer
|
@inject IStringLocalizer<TIAMResources> localizer
|
||||||
@inject IWizardProcessor wizardProcessor
|
@inject IWizardProcessor wizardProcessor
|
||||||
@inject ITransferDataService transferDataService
|
@inject ITransferDataService transferDataService
|
||||||
@inject ISessionService sessionService
|
@inject ISessionServiceClient sessionService
|
||||||
@inject AdminSignalRClient AdminSignalRClient;
|
@inject AdminSignalRClient AdminSignalRClient;
|
||||||
<PageTitle>Transfers</PageTitle>
|
<PageTitle>Transfers</PageTitle>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
@inject NavigationManager NavManager
|
@inject NavigationManager NavManager
|
||||||
@inject IJSRuntime jsRuntime
|
@inject IJSRuntime jsRuntime
|
||||||
@inject ISecureStorageHandler SecureStorageHandler
|
@inject ISecureStorageHandler SecureStorageHandler
|
||||||
@inject ISessionService sessionService
|
@inject ISessionServiceClient sessionService
|
||||||
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
||||||
@inject IUserDataService userDataService
|
@inject IUserDataService userDataService
|
||||||
@attribute [Authorize]
|
@attribute [Authorize]
|
||||||
|
|
|
||||||
|
|
@ -29,10 +29,10 @@ namespace TIAMSharedUI.Shared.Components.BaseComponents
|
||||||
protected IStringLocalizer<TIAMResources> _localizer { get; set; }
|
protected IStringLocalizer<TIAMResources> _localizer { get; set; }
|
||||||
|
|
||||||
[Inject]
|
[Inject]
|
||||||
protected ISessionService _sessionService { get; set; }
|
protected ISessionServiceClient _sessionService { get; set; }
|
||||||
|
|
||||||
private LoggerClient<BasePageComponent> _logger = null!;
|
private LoggerClient<BasePageComponent> _logger = null!;
|
||||||
public BasePageComponent(NavigationManager navManager, PageHistoryState pageState, IEnumerable<IAcLogWriterClientBase> logWriters, IStringLocalizer<TIAMResources> localizer,ISessionService sessionService)
|
public BasePageComponent(NavigationManager navManager, PageHistoryState pageState, IEnumerable<IAcLogWriterClientBase> logWriters, IStringLocalizer<TIAMResources> localizer,ISessionServiceClient sessionService)
|
||||||
{
|
{
|
||||||
_navManager = navManager;
|
_navManager = navManager;
|
||||||
_pageState = pageState;
|
_pageState = pageState;
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ namespace TIAMSharedUI.Shared.Components
|
||||||
|
|
||||||
[Inject] public ISecureStorageHandler SecureStorageHandler { get; set; }
|
[Inject] public ISecureStorageHandler SecureStorageHandler { get; set; }
|
||||||
|
|
||||||
[Inject] public ISessionService sessionService { get; set; }
|
[Inject] public ISessionServiceClient sessionService { get; set; }
|
||||||
[Inject] public IStringLocalizer<TIAMResources> localizer { get; set; }
|
[Inject] public IStringLocalizer<TIAMResources> localizer { get; set; }
|
||||||
|
|
||||||
[Inject] public NavigationManager navigationManager { get; set; }
|
[Inject] public NavigationManager navigationManager { get; set; }
|
||||||
|
|
@ -90,21 +90,26 @@ namespace TIAMSharedUI.Shared.Components
|
||||||
|
|
||||||
private async Task SignOut()
|
private async Task SignOut()
|
||||||
{
|
{
|
||||||
|
_logger.Info("Navbar->SignOut called");
|
||||||
|
|
||||||
//SiteViewModel.ClearAll();
|
//SiteViewModel.ClearAll();
|
||||||
|
|
||||||
bool serverResult;
|
//bool serverResult;
|
||||||
string userDetailsStr = await SecureStorageHandler.GetFromSecureStorageAsync(nameof(Setting.UserBasicDetails));
|
//string userDetailsStr = await SecureStorageHandler.GetFromSecureStorageAsync(nameof(Setting.UserBasicDetails));
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(userDetailsStr))
|
//if (!string.IsNullOrEmpty(userDetailsStr))
|
||||||
{
|
//{
|
||||||
var userBasicDetail = JsonConvert.DeserializeObject<UserBasicDetails>(userDetailsStr);
|
// var userBasicDetail = JsonConvert.DeserializeObject<UserBasicDetails>(userDetailsStr);
|
||||||
serverResult = await UserDataService.Logout(userBasicDetail?.RefreshToken);
|
// serverResult = await UserDataService.Logout(userBasicDetail?.RefreshToken);
|
||||||
}
|
//}
|
||||||
|
|
||||||
await SecureStorageHandler.ClearAllSecureStorageAsync();
|
//await SecureStorageHandler.ClearAllSecureStorageAsync();
|
||||||
var result = await AuthStateProvider.GetAuthenticationStateAsync();
|
//var result = await AuthStateProvider.GetAuthenticationStateAsync();
|
||||||
|
|
||||||
|
//sessionService.ClearAll();
|
||||||
|
|
||||||
|
await UserDataService.SignOut();
|
||||||
|
|
||||||
sessionService.ClearAll();
|
|
||||||
navigationManager.NavigateTo("/");
|
navigationManager.NavigateTo("/");
|
||||||
myUser = false;
|
myUser = false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
@using AyCode.Interfaces.StorageHandlers;
|
@using AyCode.Interfaces.StorageHandlers;
|
||||||
@using TIAMWebApp.Shared.Application.Utility
|
@using TIAMWebApp.Shared.Application.Utility
|
||||||
@inject ISecureStorageHandler SecureStorageHandler
|
@inject ISecureStorageHandler SecureStorageHandler
|
||||||
@inject ISessionService SessionService
|
@inject ISessionServiceClient SessionService
|
||||||
@inject IUserDataService UserDataService
|
@inject IUserDataService UserDataService
|
||||||
@inject AuthenticationStateProvider AuthStateProvider
|
@inject AuthenticationStateProvider AuthStateProvider
|
||||||
@inject NavigationManager NavigationManager
|
@inject NavigationManager NavigationManager
|
||||||
|
|
@ -234,7 +234,7 @@
|
||||||
await SecureStorageHandler.ClearAllSecureStorageAsync();
|
await SecureStorageHandler.ClearAllSecureStorageAsync();
|
||||||
var result = await AuthStateProvider.GetAuthenticationStateAsync();
|
var result = await AuthStateProvider.GetAuthenticationStateAsync();
|
||||||
|
|
||||||
SessionService.ClearAll();
|
await SessionService.ClearAll();
|
||||||
NavigationManager.NavigateTo("/");
|
NavigationManager.NavigateTo("/");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ using System.Net;
|
||||||
using Microsoft.AspNetCore.Components.Authorization;
|
using Microsoft.AspNetCore.Components.Authorization;
|
||||||
using TIAM.Models;
|
using TIAM.Models;
|
||||||
using TIAM.Models.PageViewModels;
|
using TIAM.Models.PageViewModels;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
|
||||||
|
|
||||||
var builder = WebAssemblyHostBuilder.CreateDefault(args);
|
var builder = WebAssemblyHostBuilder.CreateDefault(args);
|
||||||
|
|
@ -22,23 +23,23 @@ var builder = WebAssemblyHostBuilder.CreateDefault(args);
|
||||||
builder.RootComponents.Add<App>("#app");
|
builder.RootComponents.Add<App>("#app");
|
||||||
builder.RootComponents.Add<HeadOutlet>("head::after");
|
builder.RootComponents.Add<HeadOutlet>("head::after");
|
||||||
builder.Services.AddLocalization();
|
builder.Services.AddLocalization();
|
||||||
builder.Services.AddScoped<IWeatherForecastService, WeatherForecastService>();
|
builder.Services.AddSingleton<IWeatherForecastService, WeatherForecastService>();
|
||||||
builder.Services.AddScoped<ITransferDataService, TransferDataService>();
|
builder.Services.AddSingleton<ITransferDataService, TransferDataService>();
|
||||||
builder.Services.AddScoped<IPopulationStructureDataProvider, PopulationStructureDataProvider>();
|
builder.Services.AddSingleton<IPopulationStructureDataProvider, PopulationStructureDataProvider>();
|
||||||
builder.Services.AddScoped<ISupplierService, SupplierService>();
|
builder.Services.AddSingleton<ISupplierService, SupplierService>();
|
||||||
builder.Services.AddScoped<IUserDataService, UserDataServiceWeb>();
|
builder.Services.AddSingleton<IUserDataService, UserDataServiceWeb>();
|
||||||
builder.Services.AddScoped<ISecureStorageHandler, SecureStorageHandler>();
|
builder.Services.AddSingleton<ISecureStorageHandler, SecureStorageHandler>();
|
||||||
builder.Services.AddBlazoredLocalStorage();
|
builder.Services.AddBlazoredLocalStorageAsSingleton();
|
||||||
builder.Services.AddSingleton<ISessionService, SessionServiceWeb>();
|
builder.Services.AddSingleton<ISessionServiceClient, SessionServiceWeb>();
|
||||||
|
|
||||||
builder.Services.AddSingleton<IComponentUpdateService, ComponentUpdateServiceWeb>();
|
builder.Services.AddSingleton<IComponentUpdateService, ComponentUpdateServiceWeb>();
|
||||||
|
|
||||||
builder.Services.AddScoped<IServiceProviderDataService, ServiceProviderDataService>();
|
builder.Services.AddSingleton<IServiceProviderDataService, ServiceProviderDataService>();
|
||||||
builder.Services.AddScoped<IClientNoticeSenderService, ClientNoticeSenderService>();
|
builder.Services.AddSingleton<IClientNoticeSenderService, ClientNoticeSenderService>();
|
||||||
builder.Services.AddScoped<IWizardProcessor, WizardProcessor>();
|
builder.Services.AddSingleton<IWizardProcessor, WizardProcessor>();
|
||||||
builder.Services.AddScoped<IImageDataService, ImageDataService>();
|
builder.Services.AddSingleton<IImageDataService, ImageDataService>();
|
||||||
//WebSpecific
|
//WebSpecific
|
||||||
builder.Services.AddScoped<SessionStorageAccessor>();
|
builder.Services.AddSingleton<SessionStorageAccessor>();
|
||||||
builder.Services.AddSingleton(x => new ResourceManager("TIAMWebApp.Client.Resources.MyResources", typeof(Program).Assembly));
|
builder.Services.AddSingleton(x => new ResourceManager("TIAMWebApp.Client.Resources.MyResources", typeof(Program).Assembly));
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
|
|
@ -50,13 +51,13 @@ builder.Services.AddSingleton<IAcLogWriterClientBase, SignaRClientLogItemWriter>
|
||||||
builder.Services.AddSingleton<AdminSignalRClient>();
|
builder.Services.AddSingleton<AdminSignalRClient>();
|
||||||
builder.Services.AddSingleton<SignalRService>();
|
builder.Services.AddSingleton<SignalRService>();
|
||||||
builder.Services.AddSingleton<SumupService>();
|
builder.Services.AddSingleton<SumupService>();
|
||||||
builder.Services.AddScoped<AuthenticationStateProvider, CustomAuthStateProvider>();
|
builder.Services.AddSingleton<AuthenticationStateProvider, CustomAuthStateProvider>();
|
||||||
builder.Services.AddAuthorizationCore();
|
builder.Services.AddAuthorizationCore();
|
||||||
builder.Services.AddScoped<ExchangeRateService>();
|
builder.Services.AddSingleton<ExchangeRateService>();
|
||||||
builder.Services.AddScoped<SmartyStreetsService>();
|
builder.Services.AddSingleton<SmartyStreetsService>();
|
||||||
builder.Services.AddScoped<GooglePlacesService>();
|
builder.Services.AddSingleton<GooglePlacesService>();
|
||||||
builder.Services.AddSingleton<PageHistoryState>();
|
builder.Services.AddSingleton<PageHistoryState>();
|
||||||
//builder.Services.AddScoped<BrowserConsoleLogWriter>();
|
//builder.Services.AddSingleton<BrowserConsoleLogWriter>();
|
||||||
|
|
||||||
//WebSpecific end
|
//WebSpecific end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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.Entities.Products;
|
||||||
using TIAM.Models;
|
using TIAM.Models;
|
||||||
using TIAMWebApp.Shared.Application.Interfaces;
|
using TIAMWebApp.Shared.Application.Interfaces;
|
||||||
|
|
@ -7,16 +9,17 @@ using TIAMWebApp.Shared.Application.Services;
|
||||||
|
|
||||||
namespace TIAMWebApp.Client.Services
|
namespace TIAMWebApp.Client.Services
|
||||||
{
|
{
|
||||||
public class SessionServiceWeb : SessionServiceClientBase
|
public class SessionServiceWeb(ISecureStorageHandler secureStorageHandler, AuthenticationStateProvider authStateProvider)
|
||||||
|
: SessionServiceClientBase(secureStorageHandler, authStateProvider)
|
||||||
{
|
{
|
||||||
public override List<Product> GetHotels()
|
public override List<Product> GetHotels()
|
||||||
{
|
{
|
||||||
return base.GetHotels();
|
return base.GetHotels();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void ClearAll()
|
public override Task ClearAll()
|
||||||
{
|
{
|
||||||
base.ClearAll();
|
return base.ClearAll();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ using TIAMWebApp.Shared.Application.Services;
|
||||||
|
|
||||||
namespace TIAMWebApp.Client.Services
|
namespace TIAMWebApp.Client.Services
|
||||||
{
|
{
|
||||||
public class UserDataServiceWeb(HttpClient http, AdminSignalRClient adminSignalRClient, ISessionService sessionService, ISecureStorageHandler secureStorageHandler, IServiceProviderDataService serviceProviderDataService, IEnumerable<IAcLogWriterClientBase> logWriters)
|
public class UserDataServiceWeb(HttpClient http, AdminSignalRClient adminSignalRClient, ISessionServiceClient sessionService, ISecureStorageHandler secureStorageHandler, IServiceProviderDataService serviceProviderDataService, IEnumerable<IAcLogWriterClientBase> logWriters)
|
||||||
: UserDataServiceClientBase(http, adminSignalRClient, sessionService, secureStorageHandler, serviceProviderDataService, logWriters);
|
: UserDataServiceClientBase(http, adminSignalRClient, sessionService, secureStorageHandler, serviceProviderDataService, logWriters);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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<TSignalRTags, TLogger>(IConfiguration configuration, UserDal userDal, SessionService sessionService, TLogger logger)
|
||||||
|
: AcWebSignalRHubBase<TSignalRTags, TLogger>(configuration, logger) where TSignalRTags : AcSignalRTags where TLogger : AcLoggerBase//Hub<ISignalRHubItemServer>, 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");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,192 +1,39 @@
|
||||||
using AyCode.Core.Extensions;
|
using AyCode.Blazor.Models.Server.Models;
|
||||||
|
using AyCode.Core.Extensions;
|
||||||
using AyCode.Core.Loggers;
|
using AyCode.Core.Loggers;
|
||||||
using AyCode.Services.SignalRs;
|
using AyCode.Services.SignalRs;
|
||||||
using Microsoft.AspNetCore.SignalR;
|
|
||||||
using TIAM.Database.DataLayers.Admins;
|
using TIAM.Database.DataLayers.Admins;
|
||||||
using MessagePack.Resolvers;
|
|
||||||
using AyCode.Services.Server.SignalRs;
|
|
||||||
using TIAM.Services;
|
using TIAM.Services;
|
||||||
using TIAMWebApp.Server.Controllers;
|
using TIAMWebApp.Server.Controllers;
|
||||||
using MessagePack;
|
|
||||||
using TIAM.Entities.Addresses;
|
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.Database.DataLayers.Users;
|
||||||
using TIAM.Services.Server.Logins;
|
using TIAM.Entities.Profiles;
|
||||||
using TIAMWebApp.Shared.Application.Interfaces;
|
using TIAM.Core.Loggers;
|
||||||
|
|
||||||
namespace TIAMWebApp.Server.Services;
|
namespace TIAMWebApp.Server.Services;
|
||||||
|
|
||||||
public class DevAdminSignalRHub : Hub<ISignalRHubItemServer>, IAcSignalRHubServer
|
public class DevAdminSignalRHub : AcWebSignalRHubWithSessionBase<SignalRTags, TIAM.Core.Loggers.Logger<DevAdminSignalRHub>>
|
||||||
{
|
{
|
||||||
private readonly List<DynamicMethodCallModel<SignalRAttribute>> _dynamicMethodCallModels = [];
|
|
||||||
private readonly TIAM.Core.Loggers.Logger<DevAdminSignalRHub> _logger;
|
|
||||||
|
|
||||||
private SessionService _sessionService;
|
|
||||||
private IConfiguration _configuration;
|
|
||||||
|
|
||||||
private readonly AdminDal _adminDal;
|
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<IAcLogWriterBase> logWriters)
|
public DevAdminSignalRHub(IConfiguration configuration, AdminDal adminDal, UserDal userDal, UserAPIController userApiController, ServiceProviderAPIController serviceProviderApiController, TransferDataAPIController transferDataApiController, MessageAPIController messageApiController, ProfileAPIController profileApiController, LoggerApiController loggerApiController, SessionService sessionService, IEnumerable<IAcLogWriterBase> logWriters)
|
||||||
|
: base(configuration, userDal, sessionService, new TIAM.Core.Loggers.Logger<DevAdminSignalRHub>(logWriters.ToArray()))
|
||||||
{
|
{
|
||||||
_adminDal = adminDal;
|
_adminDal = adminDal;
|
||||||
_userDal = userDal;
|
|
||||||
|
|
||||||
_configuration = configuration;
|
DynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(userApiController));
|
||||||
|
DynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(serviceProviderApiController));
|
||||||
//_serviceProviderApiController = serviceProviderApiController;
|
DynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(transferDataApiController));
|
||||||
//_transferDataApiController = transferDataApiController;
|
DynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(messageApiController));
|
||||||
|
DynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(profileApiController));
|
||||||
_logger = new(logWriters.ToArray());
|
DynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(loggerApiController));
|
||||||
_sessionService = sessionService;
|
|
||||||
|
|
||||||
_dynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(userApiController));
|
|
||||||
_dynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(serviceProviderApiController));
|
|
||||||
_dynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(transferDataApiController));
|
|
||||||
_dynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(messageApiController));
|
|
||||||
_dynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(profileApiController));
|
|
||||||
_dynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(loggerApiController));
|
|
||||||
//_dynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(typeof(AdminDal)));
|
//_dynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(typeof(AdminDal)));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://docs.microsoft.com/en-us/aspnet/core/signalr/hubs?view=aspnetcore-3.1#strongly-typed-hubs
|
public override Task OnReceiveMessage(int messageTag, byte[]? message, int? requestId)
|
||||||
public override async Task OnConnectedAsync()
|
|
||||||
{
|
{
|
||||||
_logger.Debug($"Server OnConnectedAsync; ConnectionId: {Context.ConnectionId}; UserIdentifier: {Context.UserIdentifier}");
|
return ProcessOnReceiveMessage(messageTag, message, requestId, async tagName =>
|
||||||
|
|
||||||
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<SignalRTags>(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
|
|
||||||
{
|
{
|
||||||
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<SignalPostJsonDataMessage<IdMessage>>();
|
|
||||||
|
|
||||||
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<SignalPostJsonDataMessage<object>>(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)
|
switch (messageTag)
|
||||||
{
|
{
|
||||||
case SignalRTags.GetAddress:
|
case SignalRTags.GetAddress:
|
||||||
|
|
@ -257,54 +104,9 @@ public class DevAdminSignalRHub : Hub<ISignalRHubItemServer>, IAcSignalRHubServe
|
||||||
// return;
|
// return;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
_logger.Error($"Server OnReceiveMessage; messageTag not found! {tagName}");
|
Logger.Error($"Server OnReceiveMessage; messageTag not found! {tagName}");
|
||||||
break;
|
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<SignalRTags>(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}");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
using System.Collections.Concurrent;
|
|
||||||
using System.Reflection;
|
|
||||||
using AyCode.Services.SignalRs;
|
|
||||||
|
|
||||||
namespace TIAMWebApp.Server.Services;
|
|
||||||
|
|
||||||
public class DynamicMethodCallModel<TAttribute> where TAttribute : TagAttribute
|
|
||||||
{
|
|
||||||
public object InstanceObject { get; init; }
|
|
||||||
public ConcurrentDictionary<int, MethodInfoModel<TAttribute>> 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<TAttribute>(attribute, methodInfo!);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
using System.Reflection;
|
|
||||||
using AyCode.Services.SignalRs;
|
|
||||||
|
|
||||||
namespace TIAMWebApp.Server.Services;
|
|
||||||
|
|
||||||
public class MethodInfoModel<TAttribute> 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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -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();
|
||||||
|
}
|
||||||
|
|
@ -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<Product> GetHotels();
|
|
||||||
public Guid DriverPersmissionId { get; set; }
|
|
||||||
public void ClearAll();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -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<Product> GetHotels();
|
||||||
|
public Guid DriverPersmissionId { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -5,7 +5,8 @@ using TIAMWebApp.Shared.Application.Models.PageModels;
|
||||||
namespace TIAMWebApp.Shared.Application.Interfaces
|
namespace TIAMWebApp.Shared.Application.Interfaces
|
||||||
{
|
{
|
||||||
public interface IUserDataService
|
public interface IUserDataService
|
||||||
{
|
{
|
||||||
|
public Task SignOut();
|
||||||
public Task<UserSessionModel> IsLoggedInAsync(Guid id);
|
public Task<UserSessionModel> IsLoggedInAsync(Guid id);
|
||||||
|
|
||||||
public Task<MainResponse?> AuthenticateUser(LoginModel loginModel);
|
public Task<MainResponse?> AuthenticateUser(LoginModel loginModel);
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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.Core.Enums;
|
||||||
using TIAM.Entities.Products;
|
using TIAM.Entities.Products;
|
||||||
using TIAM.Models;
|
|
||||||
using TIAMWebApp.Shared.Application.Interfaces;
|
using TIAMWebApp.Shared.Application.Interfaces;
|
||||||
using TIAMWebApp.Shared.Application.Models;
|
using TIAMWebApp.Shared.Application.Models.ClientSide;
|
||||||
|
|
||||||
namespace TIAMWebApp.Shared.Application.Services;
|
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 HasCompany { get; set; } = false;
|
||||||
public bool IsDriver { 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 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() : [];
|
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;
|
HasCompany = false;
|
||||||
IsDriver = false;
|
IsDriver = false;
|
||||||
IsDevAdmin = false;
|
|
||||||
IsSysAdmin = false;
|
|
||||||
DriverPersmissionId = Guid.Empty;
|
DriverPersmissionId = Guid.Empty;
|
||||||
|
|
||||||
SiteViewModel.ClearAll();
|
await base.ClearAll();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -4,6 +4,7 @@ using System.Text.Json;
|
||||||
using AyCode.Core.Extensions;
|
using AyCode.Core.Extensions;
|
||||||
using AyCode.Interfaces.StorageHandlers;
|
using AyCode.Interfaces.StorageHandlers;
|
||||||
using AyCode.Services.Loggers;
|
using AyCode.Services.Loggers;
|
||||||
|
using AyCode.Utils.Extensions;
|
||||||
using Microsoft.IdentityModel.Tokens;
|
using Microsoft.IdentityModel.Tokens;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using TIAM.Models.Dtos.Users;
|
using TIAM.Models.Dtos.Users;
|
||||||
|
|
@ -22,12 +23,12 @@ public abstract class UserDataServiceClientBase : IUserDataService
|
||||||
protected readonly LoggerClient Logger;
|
protected readonly LoggerClient Logger;
|
||||||
protected readonly AdminSignalRClient AdminSignalRClient;
|
protected readonly AdminSignalRClient AdminSignalRClient;
|
||||||
|
|
||||||
protected readonly ISessionService SessionService;
|
protected readonly ISessionServiceClient SessionService;
|
||||||
protected readonly ISecureStorageHandler SecureStorageHandler;
|
protected readonly ISecureStorageHandler SecureStorageHandler;
|
||||||
protected readonly IServiceProviderDataService ServiceProviderDataService;
|
protected readonly IServiceProviderDataService ServiceProviderDataService;
|
||||||
|
|
||||||
|
|
||||||
protected UserDataServiceClientBase(HttpClient http, AdminSignalRClient adminSignalRClient, ISessionService sessionService, ISecureStorageHandler secureStorageHandler, IServiceProviderDataService serviceProviderDataService, IEnumerable<IAcLogWriterClientBase> logWriters)
|
protected UserDataServiceClientBase(HttpClient http, AdminSignalRClient adminSignalRClient, ISessionServiceClient sessionService, ISecureStorageHandler secureStorageHandler, IServiceProviderDataService serviceProviderDataService, IEnumerable<IAcLogWriterClientBase> logWriters)
|
||||||
{
|
{
|
||||||
Http = http;
|
Http = http;
|
||||||
AdminSignalRClient = adminSignalRClient;
|
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<UserBasicDetails>(userDetailsStr);
|
||||||
|
|
||||||
|
if (userBasicDetail != null && !userBasicDetail.RefreshToken.IsNullOrWhiteSpace())
|
||||||
|
await Logout(userBasicDetail.RefreshToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
await SessionService.ClearAll();
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<UserSessionModel> IsLoggedInAsync(Guid id)
|
public async Task<UserSessionModel> IsLoggedInAsync(Guid id)
|
||||||
{
|
{
|
||||||
//api call to get user
|
//api call to get user
|
||||||
|
|
|
||||||
|
|
@ -63,5 +63,8 @@
|
||||||
<Reference Include="AyCode.Services">
|
<Reference Include="AyCode.Services">
|
||||||
<HintPath>..\..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Services.dll</HintPath>
|
<HintPath>..\..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Services.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="AyCode.Utils">
|
||||||
|
<HintPath>..\..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Utils.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,8 @@
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
|
||||||
<PackageReference Include="MSTest.TestAdapter" Version="3.6.1" />
|
<PackageReference Include="MSTest.TestAdapter" Version="3.6.2" />
|
||||||
<PackageReference Include="MSTest.TestFramework" Version="3.6.1" />
|
<PackageReference Include="MSTest.TestFramework" Version="3.6.2" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue