SessionServiceClientBase; improvements, fixes, etc...

This commit is contained in:
Loretta 2024-08-26 19:15:28 +02:00
parent 8d9b3bf072
commit 87240cb77d
15 changed files with 171 additions and 171 deletions

View File

@ -2,44 +2,24 @@
using TIAM.Core.Consts; using TIAM.Core.Consts;
using TIAM.Entities.Products; using TIAM.Entities.Products;
using TIAM.Entities.Users; using TIAM.Entities.Users;
using TIAM.Models;
using TIAMWebApp.Shared.Application.Interfaces; using TIAMWebApp.Shared.Application.Interfaces;
using TIAMWebApp.Shared.Application.Models; using TIAMWebApp.Shared.Application.Models;
using TIAMWebApp.Shared.Application.Services;
using static System.Runtime.InteropServices.JavaScript.JSType; using static System.Runtime.InteropServices.JavaScript.JSType;
namespace TIAMMobileApp.Services namespace TIAMMobileApp.Services
{ {
public class SessionServiceMobile : ISessionService public class SessionServiceMobile : SessionServiceClientBase
{ {
public string? SessionId { get; set; } public override List<Product> GetHotels()
public UserSessionModel? User { get; set; }
public IPAddress? IPAddress { get; set; }
public bool IsAuthenticated { get; set; } = false;
public bool HasCompany { get; set; } = false;
public bool IsDriver { get; set; } = false;
public bool IsDevAdmin { get; set; } = false;
public bool IsSysAdmin { get; set; } = false;
public List<Product> GetHotels()
{ {
if (User.UserModelDto.Products.Count > 0) return base.GetHotels();
{
return User.UserModelDto.Products.Where(x => x.ProductType == TIAM.Core.Enums.ProductType.Hotel).ToList();
}
else return new List<Product>();
}
public Guid DriverPersmissionId { get; set; } = Guid.Empty;
public async Task ClearAll()
{
SessionId = "";
User = null;
IPAddress = null;
IsAuthenticated = false;
HasCompany = false;
IsDriver = false;
IsDevAdmin = false;
IsSysAdmin = false;
DriverPersmissionId = Guid.Empty;
} }
public override void ClearAll()
{
base.ClearAll();
}
} }
} }

View File

@ -20,17 +20,17 @@ namespace TIAMMobileApp.Services
public class UserDataServiceMobile : IUserDataService public class UserDataServiceMobile : IUserDataService
{ {
private readonly HttpClient _http; private readonly HttpClient _http;
private readonly SiteViewModel _siteViewModel; private readonly ISessionService _sessionService;
private readonly ISecureStorageHandler _secureStorageHandler; private readonly ISecureStorageHandler _secureStorageHandler;
private readonly IServiceProviderDataService _serviceProviderDataService; private readonly IServiceProviderDataService _serviceProviderDataService;
private readonly LoggerClient<UserDataServiceMobile> _logger; private readonly LoggerClient<UserDataServiceMobile> _logger;
public UserDataServiceMobile(HttpClient http, SiteViewModel siteViewModel, ISecureStorageHandler secureStorageHandler, IServiceProviderDataService serviceProviderDataService, IEnumerable<IAcLogWriterClientBase> logWriters) public UserDataServiceMobile(HttpClient http, ISessionService sessionService, ISecureStorageHandler secureStorageHandler, IServiceProviderDataService serviceProviderDataService, IEnumerable<IAcLogWriterClientBase> logWriters)
{ {
_http = http; _http = http;
_sessionService = sessionService;
_secureStorageHandler = secureStorageHandler; _secureStorageHandler = secureStorageHandler;
_siteViewModel = siteViewModel;
//this._browserConsoleLogWriter = new BrowserConsoleLogWriter(jsRuntime); //this._browserConsoleLogWriter = new BrowserConsoleLogWriter(jsRuntime);
_serviceProviderDataService = serviceProviderDataService; _serviceProviderDataService = serviceProviderDataService;
@ -46,9 +46,9 @@ namespace TIAMMobileApp.Services
if (userModelDto != null) if (userModelDto != null)
{ {
Dictionary<Guid, string> userProperties = new Dictionary<Guid, string>(); var userProperties = new Dictionary<Guid, string>();
//get user's properties //get user's properties
bool hasProperties = userModelDto.ServiceProviders.Count > 0 ? true : userModelDto.ServiceProviders.Count == 0 ? false : false; var hasProperties = userModelDto.ServiceProviders.Count > 0 ? true : userModelDto.ServiceProviders.Count == 0 ? false : false;
if (hasProperties) if (hasProperties)
{ {
@ -85,7 +85,7 @@ namespace TIAMMobileApp.Services
public async Task<string> AuthenticateUser(LoginModel loginModel) public async Task<string> AuthenticateUser(LoginModel loginModel)
{ {
string result = string.Empty; var result = string.Empty;
var url = $"{Setting.ApiBaseUrl}/{APIUrls.AuthenticateUser}"; var url = $"{Setting.ApiBaseUrl}/{APIUrls.AuthenticateUser}";
var response = await _http.PostAsJsonAsync(url, loginModel); var response = await _http.PostAsJsonAsync(url, loginModel);
@ -116,8 +116,8 @@ namespace TIAMMobileApp.Services
public async Task<(bool isSuccess, string ErrorMessage)> CreateUser(RegistrationModel regModel) public async Task<(bool isSuccess, string ErrorMessage)> CreateUser(RegistrationModel regModel)
{ {
bool isSuccess = true; var isSuccess = true;
string result = string.Empty; var result = string.Empty;
var url = $"{Setting.ApiBaseUrl}/{APIUrls.CreateUser}"; var url = $"{Setting.ApiBaseUrl}/{APIUrls.CreateUser}";
_logger.Info("CreateUser url: " + url); _logger.Info("CreateUser url: " + url);
var response = await _http.PostAsJsonAsync(url, regModel); var response = await _http.PostAsJsonAsync(url, regModel);
@ -140,9 +140,9 @@ namespace TIAMMobileApp.Services
public async Task<(bool isSuccess, UserModelDto? user)> CreateGuestUser(RegistrationModel regModel) public async Task<(bool isSuccess, UserModelDto? user)> CreateGuestUser(RegistrationModel regModel)
{ {
bool isSuccess = false; var isSuccess = false;
string result = string.Empty; var result = string.Empty;
UserModelDto? user = new UserModelDto(); var user = new UserModelDto();
var url = $"{Setting.ApiBaseUrl}/{APIUrls.CreateGuestUser}"; var url = $"{Setting.ApiBaseUrl}/{APIUrls.CreateGuestUser}";
_logger.Info("CreateGuestUser url: " + url); _logger.Info("CreateGuestUser url: " + url);
var response = await _http.PostAsJsonAsync(url, regModel); var response = await _http.PostAsJsonAsync(url, regModel);
@ -257,7 +257,7 @@ namespace TIAMMobileApp.Services
public async Task<bool> RefreshToken() public async Task<bool> RefreshToken()
{ {
_logger.Info("RefreshToken() called"); _logger.Info("RefreshToken() called");
bool isTokenRefreshed = false; var isTokenRefreshed = false;
var url = $"{Setting.ApiBaseUrl}/{APIUrls.RefreshToken}"; var url = $"{Setting.ApiBaseUrl}/{APIUrls.RefreshToken}";
//var url = APIUrls.RefreshToken; //var url = APIUrls.RefreshToken;
@ -274,7 +274,7 @@ namespace TIAMMobileApp.Services
var response = await _http.PostAsync(url, new StringContent(serializedStr, Encoding.UTF8, "application/json")); var response = await _http.PostAsync(url, new StringContent(serializedStr, Encoding.UTF8, "application/json"));
if (response.IsSuccessStatusCode) if (response.IsSuccessStatusCode)
{ {
string contentStr = await response.Content.ReadAsStringAsync(); var contentStr = await response.Content.ReadAsStringAsync();
var mainResponse = JsonConvert.DeserializeObject<MainResponse>(contentStr); var mainResponse = JsonConvert.DeserializeObject<MainResponse>(contentStr);
if (mainResponse.IsSuccess) if (mainResponse.IsSuccess)
{ {
@ -282,7 +282,7 @@ namespace TIAMMobileApp.Services
Setting.UserBasicDetails.AccessToken = tokenDetails.AccessToken; Setting.UserBasicDetails.AccessToken = tokenDetails.AccessToken;
Setting.UserBasicDetails.RefreshToken = tokenDetails.RefreshToken; Setting.UserBasicDetails.RefreshToken = tokenDetails.RefreshToken;
string userDetailsStr = JsonConvert.SerializeObject(Setting.UserBasicDetails); var userDetailsStr = JsonConvert.SerializeObject(Setting.UserBasicDetails);
await _secureStorageHandler.SaveToSecureStorageAsync(nameof(Setting.UserBasicDetails), userDetailsStr); await _secureStorageHandler.SaveToSecureStorageAsync(nameof(Setting.UserBasicDetails), userDetailsStr);
isTokenRefreshed = true; isTokenRefreshed = true;
} }
@ -290,7 +290,7 @@ namespace TIAMMobileApp.Services
} }
catch (Exception ex) catch (Exception ex)
{ {
string msg = ex.Message; var msg = ex.Message;
_logger.Error("Refreshtoken exception: " + ex.Message, ex); _logger.Error("Refreshtoken exception: " + ex.Message, ex);
} }
@ -298,18 +298,16 @@ namespace TIAMMobileApp.Services
return isTokenRefreshed; return isTokenRefreshed;
} }
public async Task<bool> Logout(string refreshToken) public async Task<bool> Logout(string? refreshToken)
{ {
_logger.Info("Logout() called"); _logger.Info($"Logout called; refreshToken: {refreshToken}");
_siteViewModel.ClearAll();
var url = $"{Setting.ApiBaseUrl}/{APIUrls.LogoutUser}"; var url = $"{Setting.ApiBaseUrl}/{APIUrls.LogoutUser}";
bool result = false; var result = false;
var response = await _http.PostAsJsonAsync(url, RefreshToken); var response = await _http.PostAsJsonAsync(url, refreshToken);
if (response.IsSuccessStatusCode) if (response.IsSuccessStatusCode)
{ {
string resultMessage = await response.Content.ReadAsStringAsync(); var resultMessage = await response.Content.ReadAsStringAsync();
_logger.Detail($"Logout response: {resultMessage}"); _logger.Detail($"Logout response: {resultMessage}");
if (resultMessage == "OK") if (resultMessage == "OK")
{ {
@ -343,7 +341,7 @@ namespace TIAMMobileApp.Services
public async Task<string> ValidateForgotPasswordToken(Guid userId, string token) public async Task<string> ValidateForgotPasswordToken(Guid userId, string token)
{ {
string? result = ""; var result = "";
_logger.Info("ValidateForgotPasswordToken() called"); _logger.Info("ValidateForgotPasswordToken() called");
var url = $"{Setting.ApiBaseUrl}/{APIUrls.ValidateForgottenPasswordToken}"; var url = $"{Setting.ApiBaseUrl}/{APIUrls.ValidateForgottenPasswordToken}";
@ -359,7 +357,7 @@ namespace TIAMMobileApp.Services
public async Task<bool> SetEmailConfirmed(Guid userId) public async Task<bool> SetEmailConfirmed(Guid userId)
{ {
bool result = false; var result = false;
_logger.Info("SetEmailConfirmed() called"); _logger.Info("SetEmailConfirmed() called");
var url = $"{Setting.ApiBaseUrl}/{APIUrls.SetEmailConfirmed}"; var url = $"{Setting.ApiBaseUrl}/{APIUrls.SetEmailConfirmed}";

View File

@ -30,7 +30,6 @@
@inject IComponentUpdateService ComponentUpdateService @inject IComponentUpdateService ComponentUpdateService
@inject AuthenticationStateProvider AuthStateProvider @inject AuthenticationStateProvider AuthStateProvider
@inject AdminSignalRClient _adminSignalRClient; @inject AdminSignalRClient _adminSignalRClient;
@inject SiteViewModel _siteViewModel;
@{ @{
if (string.IsNullOrWhiteSpace(TrackingId)) if (string.IsNullOrWhiteSpace(TrackingId))
@ -130,8 +129,8 @@
_adminSignalRClient.GetByIdAsync<SiteViewModel>(SignalRTags.GetSiteViewModelByUserId, signalResponseMessage => _adminSignalRClient.GetByIdAsync<SiteViewModel>(SignalRTags.GetSiteViewModelByUserId, signalResponseMessage =>
{ {
_siteViewModel.Initialize(signalResponseMessage.ResponseData!); sessionService.SiteViewModel.Initialize(signalResponseMessage.ResponseData!);
_logger.Debug($"UnreadMessages: {_siteViewModel.UnreadMessagesCount}"); _logger.Debug($"UnreadMessages: {sessionService.SiteViewModel.UnreadMessagesCount}");
ComponentUpdateService.CallRequestRefresh<Navbar>(); ComponentUpdateService.CallRequestRefresh<Navbar>();
return Task.CompletedTask; return Task.CompletedTask;
@ -215,10 +214,10 @@
{ {
var userBasicDetail = JsonConvert.DeserializeObject<UserBasicDetails>(userDetailsStr); var userBasicDetail = JsonConvert.DeserializeObject<UserBasicDetails>(userDetailsStr);
UserDataService.Logout(userBasicDetail.RefreshToken); UserDataService.Logout(userBasicDetail?.RefreshToken);
AuthStateProvider.GetAuthenticationStateAsync(); AuthStateProvider.GetAuthenticationStateAsync();
SecureStorageHandler.ClearAllSecureStorageAsync(); SecureStorageHandler.ClearAllSecureStorageAsync();
sessionService.ClearAll().Forget(); sessionService.ClearAll();
} }
CultureInfo Culture CultureInfo Culture

View File

@ -23,7 +23,6 @@ namespace TIAMSharedUI.Pages
public partial class Login : BasePageComponent public partial class Login : BasePageComponent
{ {
[Inject] private AdminSignalRClient _adminSignalRClient { get; set; } [Inject] private AdminSignalRClient _adminSignalRClient { get; set; }
[Inject] private SiteViewModel _siteViewModel { get; set; }
[Inject] [Inject]
public NavigationManager navManager { get; set; } public NavigationManager navManager { get; set; }
@ -39,6 +38,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; }
//fill loginmodel with fake but valid data //fill loginmodel with fake but valid data
//LoginModel loginModel = new(); //LoginModel loginModel = new();
@ -125,8 +125,8 @@ namespace TIAMSharedUI.Pages
_adminSignalRClient.GetByIdAsync<SiteViewModel>(SignalRTags.GetSiteViewModelByUserId, signalResponseMessage => _adminSignalRClient.GetByIdAsync<SiteViewModel>(SignalRTags.GetSiteViewModelByUserId, signalResponseMessage =>
{ {
_siteViewModel.Initialize(signalResponseMessage.ResponseData!); sessionService.SiteViewModel.Initialize(signalResponseMessage.ResponseData!);
BrowserConsoleLogWriter.Debug($"UnreadMessages: {_siteViewModel.UnreadMessages.Count}"); BrowserConsoleLogWriter.Debug($"UnreadMessages: {sessionService.SiteViewModel.UnreadMessages.Count}");
componentUpdateService.CallRequestRefreshAll(); componentUpdateService.CallRequestRefreshAll();
return Task.CompletedTask; return Task.CompletedTask;

View File

@ -33,9 +33,8 @@
@inject IEnumerable<IAcLogWriterClientBase> LogWriters @inject IEnumerable<IAcLogWriterClientBase> LogWriters
@inject IStringLocalizer<TIAMResources> localizer @inject IStringLocalizer<TIAMResources> localizer
@inject IWizardProcessor wizardProcessor @inject IWizardProcessor wizardProcessor
@inject ITransferDataService transferDataService @inject ITransferDataService transferDataService;
@inject ISessionService sessionService @inject ISessionService sessionService;
@inject SiteViewModel SiteViewModel;
@inject AdminSignalRClient AdminSignalRClient; @inject AdminSignalRClient AdminSignalRClient;
<PageTitle>Transfers</PageTitle> <PageTitle>Transfers</PageTitle>
@ -406,7 +405,7 @@
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
_logger = new LoggerClient<DriverManageTransfers>(LogWriters.ToArray()); _logger = new LoggerClient<DriverManageTransfers>(LogWriters.ToArray());
_pageModel = SiteViewModel.DriverManageTransfersPageModel; _pageModel = sessionService.SiteViewModel.DriverManageTransfersPageModel;
InitializePageAsync(DriverId).Forget(); InitializePageAsync(DriverId).Forget();

View File

@ -25,7 +25,7 @@
@inherits UserBasePageComponent @inherits UserBasePageComponent
@inject IEnumerable<IAcLogWriterClientBase> LogWriters @inject IEnumerable<IAcLogWriterClientBase> LogWriters
@inject AdminSignalRClient AdminSignalRClient; @inject AdminSignalRClient AdminSignalRClient;
@inject SiteViewModel SiteViewModel; @inject ISessionService sessionService
@inject IComponentUpdateService ComponentUpdateService @inject IComponentUpdateService ComponentUpdateService
<MessageDetailGrid CssClass="my-grid" @ref="_messageGrid" <MessageDetailGrid CssClass="my-grid" @ref="_messageGrid"
@ -141,7 +141,7 @@
_messageGrid.UpdateDataItemAsync(emailMessage).Forget(); _messageGrid.UpdateDataItemAsync(emailMessage).Forget();
SiteViewModel.UnreadMessages.RemoveAll(x => x.Id == emailMessage.Id); sessionService.SiteViewModel.UnreadMessages.RemoveAll(x => x.Id == emailMessage.Id);
ComponentUpdateService.CallRequestRefreshAll(); ComponentUpdateService.CallRequestRefreshAll();
//InvokeAsync(StateHasChanged).ContinueWith(x => _messageGrid.UpdateDataItemAsync(emailMessage).Forget()); //InvokeAsync(StateHasChanged).ContinueWith(x => _messageGrid.UpdateDataItemAsync(emailMessage).Forget());
} }

View File

@ -80,7 +80,7 @@
@{ @{
string url3 = $"user/messages/{userId}"; string url3 = $"user/messages/{userId}";
<NavLink class="nav-link" href="@url3"> <NavLink class="nav-link" href="@url3">
<i class="fa-solid fa-envelope">@(" (" + SiteViewModel.UnreadMessagesCount + ")")</i> <i class="fa-solid fa-envelope">@(" (" + sessionService.SiteViewModel.UnreadMessagesCount + ")")</i>
</NavLink> </NavLink>
} }
</li> </li>

View File

@ -28,31 +28,22 @@ namespace TIAMSharedUI.Shared.Components
{ {
public partial class Navbar : ComponentBase public partial class Navbar : ComponentBase
{ {
[Inject] [Inject] public required IEnumerable<IAcLogWriterClientBase> LogWriters { get; set; }
public required IEnumerable<IAcLogWriterClientBase> LogWriters { get; set; }
[Inject] [Inject] public ISecureStorageHandler SecureStorageHandler { get; set; }
public ISecureStorageHandler SecureStorageHandler { get; set; }
[Inject] [Inject] public ISessionService sessionService { get; set; }
public ISessionService sessionService { get; set; } [Inject] public IStringLocalizer<TIAMResources> localizer { get; set; }
[Inject]
public IStringLocalizer<TIAMResources> localizer { get; set; }
[Inject] [Inject] public NavigationManager navigationManager { get; set; }
public NavigationManager navigationManager { get; set; }
[Inject] [Inject] public IComponentUpdateService componentUpdateService { get; set; }
public IComponentUpdateService componentUpdateService { get; set; }
[Inject] [Inject] private IUserDataService UserDataService { get; set; }
private IUserDataService UserDataService { get; set; }
[Inject] [Inject] private IJSRuntime JsRuntime { get; set; }
private IJSRuntime JsRuntime { get; set; }
[Inject] AuthenticationStateProvider AuthStateProvider { get; set; } [Inject] AuthenticationStateProvider AuthStateProvider { get; set; }
[Inject] SiteViewModel SiteViewModel { get; set; }
private bool enableLogin = true; private bool enableLogin = true;
private bool enableEvents = false; private bool enableEvents = false;
@ -102,15 +93,17 @@ namespace TIAMSharedUI.Shared.Components
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();
await sessionService.ClearAll(); sessionService.ClearAll();
navigationManager.NavigateTo("/"); navigationManager.NavigateTo("/");
myUser = false; myUser = false;
} }

View File

@ -205,6 +205,7 @@
{ {
userHasHotels = true; userHasHotels = true;
} }
if (SessionService.User != null) if (SessionService.User != null)
{ {
userId = SessionService.User.UserId; userId = SessionService.User.UserId;
@ -215,6 +216,7 @@
userFullName = SessionService.User.UserModelDto.ProfileDto.FullName; userFullName = SessionService.User.UserModelDto.ProfileDto.FullName;
} }
} }
await base.OnInitializedAsync(); await base.OnInitializedAsync();
} }
@ -232,17 +234,17 @@
{ {
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();
await SessionService.ClearAll(); SessionService.ClearAll();
NavigationManager.NavigateTo("/"); NavigationManager.NavigateTo("/");
} }
} }

View File

@ -31,7 +31,6 @@ builder.Services.AddScoped<ISecureStorageHandler, SecureStorageHandler>();
builder.Services.AddBlazoredLocalStorage(); builder.Services.AddBlazoredLocalStorage();
builder.Services.AddSingleton<ISessionService, SessionServiceWeb>(); builder.Services.AddSingleton<ISessionService, SessionServiceWeb>();
builder.Services.AddSingleton<SiteViewModel>();
builder.Services.AddSingleton<IComponentUpdateService, ComponentUpdateServiceWeb>(); builder.Services.AddSingleton<IComponentUpdateService, ComponentUpdateServiceWeb>();
builder.Services.AddScoped<IServiceProviderDataService, ServiceProviderDataService>(); builder.Services.AddScoped<IServiceProviderDataService, ServiceProviderDataService>();

View File

@ -1,47 +1,22 @@
using System.Net; using System.Net;
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;
using TIAMWebApp.Shared.Application.Services;
namespace TIAMWebApp.Client.Services namespace TIAMWebApp.Client.Services
{ {
public class SessionServiceWeb : ISessionService public class SessionServiceWeb : SessionServiceClientBase
{ {
public string? SessionId { get; set; } public override List<Product> GetHotels()
public UserSessionModel? User { get; set; }
public IPAddress? IPAddress { get; set; }
public bool IsAuthenticated { get; set; } = false;
public bool HasCompany { get; set; } = false;
public bool IsDriver { get; set; } = false;
public bool IsDevAdmin { get; set; } = false;
public bool IsSysAdmin { get; set; } = false;
public List<Product> GetHotels()
{ {
if(User != null) return base.GetHotels();
{
if(User.UserModelDto.Products.Count > 0)
{
return User.UserModelDto.Products.Where(x => x.ProductType == TIAM.Core.Enums.ProductType.Hotel).ToList();
}
else return new List<Product>();
}
else return new List<Product>();
} }
public Guid DriverPersmissionId { get; set; } = Guid.Empty; public override void ClearAll()
public async Task ClearAll()
{ {
SessionId = ""; base.ClearAll();
User = null;
IPAddress = null;
IsAuthenticated = false;
HasCompany = false;
IsDriver = false;
IsDevAdmin = false;
IsSysAdmin = false;
DriverPersmissionId = Guid.Empty;
} }
} }
} }

View File

@ -13,6 +13,7 @@ using System.Net.Http;
using AyCode.Core.Extensions; using AyCode.Core.Extensions;
using System.Text.Json; using System.Text.Json;
using TIAM.Models; using TIAM.Models;
using AyCode.Blazor.Components.Services;
namespace TIAMWebApp.Client.Services namespace TIAMWebApp.Client.Services
@ -20,19 +21,19 @@ namespace TIAMWebApp.Client.Services
public class UserDataServiceWeb : IUserDataService public class UserDataServiceWeb : IUserDataService
{ {
private readonly HttpClient _http; private readonly HttpClient _http;
private readonly SiteViewModel _siteViewModel; private readonly ISessionService _sessionService;
private readonly ISecureStorageHandler _secureStorageHandler; private readonly ISecureStorageHandler _secureStorageHandler;
//private readonly BrowserConsoleLogWriter _browserConsoleLogWriter; //private readonly BrowserConsoleLogWriter _browserConsoleLogWriter;
private readonly IServiceProviderDataService _serviceProviderDataService; private readonly IServiceProviderDataService _serviceProviderDataService;
private readonly LoggerClient<UserDataServiceWeb> _logger; private readonly LoggerClient<UserDataServiceWeb> _logger;
public UserDataServiceWeb(HttpClient http, ISessionService sessionService, ISecureStorageHandler secureStorageHandler, IServiceProviderDataService serviceProviderDataService, IEnumerable<IAcLogWriterClientBase> logWriters)
public UserDataServiceWeb(HttpClient http, SiteViewModel siteViewModel, ISecureStorageHandler secureStorageHandler, IServiceProviderDataService serviceProviderDataService, IEnumerable<IAcLogWriterClientBase> logWriters)
//public UserDataServiceWeb(HttpClient http, ISecureStorageHandler secureStorageHandler, IJSRuntime jSRuntime, IServiceProviderDataService serviceProviderDataService, HttpClientLogItemWriter logWriter) //public UserDataServiceWeb(HttpClient http, ISecureStorageHandler secureStorageHandler, IJSRuntime jSRuntime, IServiceProviderDataService serviceProviderDataService, HttpClientLogItemWriter logWriter)
{ {
_http = http; _http = http;
_siteViewModel = siteViewModel; _sessionService = sessionService;
_secureStorageHandler = secureStorageHandler; _secureStorageHandler = secureStorageHandler;
//this._browserConsoleLogWriter = new BrowserConsoleLogWriter(jsRuntime); //this._browserConsoleLogWriter = new BrowserConsoleLogWriter(jsRuntime);
@ -90,7 +91,7 @@ namespace TIAMWebApp.Client.Services
public async Task<string> AuthenticateUser(LoginModel loginModel) public async Task<string> AuthenticateUser(LoginModel loginModel)
{ {
string result = string.Empty; var result = string.Empty;
var url = $"{Setting.ApiBaseUrl}/{APIUrls.AuthenticateUser}"; var url = $"{Setting.ApiBaseUrl}/{APIUrls.AuthenticateUser}";
var response = await _http.PostAsJsonAsync(url, loginModel); var response = await _http.PostAsJsonAsync(url, loginModel);
@ -121,8 +122,8 @@ namespace TIAMWebApp.Client.Services
public async Task<(bool isSuccess, string ErrorMessage)> CreateUser(RegistrationModel regModel) public async Task<(bool isSuccess, string ErrorMessage)> CreateUser(RegistrationModel regModel)
{ {
bool isSuccess = true; var isSuccess = true;
string result = string.Empty; var result = string.Empty;
var url = $"{Setting.ApiBaseUrl}/{APIUrls.CreateUser}"; var url = $"{Setting.ApiBaseUrl}/{APIUrls.CreateUser}";
_logger.Info("CreateUser url: " + url); _logger.Info("CreateUser url: " + url);
var response = await _http.PostAsJsonAsync(url, regModel); var response = await _http.PostAsJsonAsync(url, regModel);
@ -145,9 +146,9 @@ namespace TIAMWebApp.Client.Services
public async Task<(bool isSuccess, UserModelDto? user)> CreateGuestUser(RegistrationModel regModel) public async Task<(bool isSuccess, UserModelDto? user)> CreateGuestUser(RegistrationModel regModel)
{ {
bool isSuccess = false; var isSuccess = false;
string result = string.Empty; var result = string.Empty;
UserModelDto? user = new UserModelDto(); var user = new UserModelDto();
var url = $"{Setting.ApiBaseUrl}/{APIUrls.CreateGuestUser}"; var url = $"{Setting.ApiBaseUrl}/{APIUrls.CreateGuestUser}";
_logger.Info("CreateGuestUser url: " + url); _logger.Info("CreateGuestUser url: " + url);
var response = await _http.PostAsJsonAsync(url, regModel); var response = await _http.PostAsJsonAsync(url, regModel);
@ -263,7 +264,7 @@ namespace TIAMWebApp.Client.Services
public async Task<bool> RefreshToken() public async Task<bool> RefreshToken()
{ {
_logger.Info("RefreshToken() called"); _logger.Info("RefreshToken() called");
bool isTokenRefreshed = false; var isTokenRefreshed = false;
var url = $"{Setting.ApiBaseUrl}/{APIUrls.RefreshToken}"; var url = $"{Setting.ApiBaseUrl}/{APIUrls.RefreshToken}";
//var url = APIUrls.RefreshToken; //var url = APIUrls.RefreshToken;
@ -280,7 +281,7 @@ namespace TIAMWebApp.Client.Services
var response = await _http.PostAsync(url, new StringContent(serializedStr, Encoding.UTF8, "application/json")); var response = await _http.PostAsync(url, new StringContent(serializedStr, Encoding.UTF8, "application/json"));
if (response.IsSuccessStatusCode) if (response.IsSuccessStatusCode)
{ {
string contentStr = await response.Content.ReadAsStringAsync(); var contentStr = await response.Content.ReadAsStringAsync();
var mainResponse = JsonConvert.DeserializeObject<MainResponse>(contentStr); var mainResponse = JsonConvert.DeserializeObject<MainResponse>(contentStr);
if (mainResponse.IsSuccess) if (mainResponse.IsSuccess)
{ {
@ -288,7 +289,7 @@ namespace TIAMWebApp.Client.Services
Setting.UserBasicDetails.AccessToken = tokenDetails.AccessToken; Setting.UserBasicDetails.AccessToken = tokenDetails.AccessToken;
Setting.UserBasicDetails.RefreshToken = tokenDetails.RefreshToken; Setting.UserBasicDetails.RefreshToken = tokenDetails.RefreshToken;
string userDetailsStr = JsonConvert.SerializeObject(Setting.UserBasicDetails); var userDetailsStr = JsonConvert.SerializeObject(Setting.UserBasicDetails);
await _secureStorageHandler.SaveToSecureStorageAsync(nameof(Setting.UserBasicDetails), userDetailsStr); await _secureStorageHandler.SaveToSecureStorageAsync(nameof(Setting.UserBasicDetails), userDetailsStr);
isTokenRefreshed = true; isTokenRefreshed = true;
} }
@ -296,7 +297,7 @@ namespace TIAMWebApp.Client.Services
} }
catch (Exception ex) catch (Exception ex)
{ {
string msg = ex.Message; var msg = ex.Message;
_logger.Error("Refreshtoken exception: " + ex.Message, ex); _logger.Error("Refreshtoken exception: " + ex.Message, ex);
} }
@ -305,18 +306,16 @@ namespace TIAMWebApp.Client.Services
return isTokenRefreshed; return isTokenRefreshed;
} }
public async Task<bool> Logout(string refreshToken) public async Task<bool> Logout(string? refreshToken)
{ {
_logger.Info("Logout() called"); _logger.Info($"Logout called; refreshToken: {refreshToken}");
_siteViewModel.ClearAll();
var url = $"{Setting.ApiBaseUrl}/{APIUrls.LogoutUser}"; var url = $"{Setting.ApiBaseUrl}/{APIUrls.LogoutUser}";
bool result = false; var result = false;
var response = await _http.PostAsJsonAsync(url, refreshToken); var response = await _http.PostAsJsonAsync(url, refreshToken);
if (response.IsSuccessStatusCode) if (response.IsSuccessStatusCode)
{ {
string resultMessage = await response.Content.ReadAsStringAsync(); var resultMessage = await response.Content.ReadAsStringAsync();
_logger.Detail($"Logout response: {resultMessage}"); _logger.Detail($"Logout response: {resultMessage}");
if (resultMessage == "OK") if (resultMessage == "OK")
{ {
@ -350,7 +349,7 @@ namespace TIAMWebApp.Client.Services
public async Task<string> ValidateForgotPasswordToken(Guid userId, string token) public async Task<string> ValidateForgotPasswordToken(Guid userId, string token)
{ {
string? result = ""; var result = "";
_logger.Info("ValidateForgotPasswordToken() called"); _logger.Info("ValidateForgotPasswordToken() called");
var url = $"{Setting.ApiBaseUrl}/{APIUrls.ValidateForgottenPasswordToken}"; var url = $"{Setting.ApiBaseUrl}/{APIUrls.ValidateForgottenPasswordToken}";
@ -366,7 +365,7 @@ namespace TIAMWebApp.Client.Services
public async Task<bool> SetEmailConfirmed(Guid userId) public async Task<bool> SetEmailConfirmed(Guid userId)
{ {
bool result = false; var result = false;
_logger.Info("SetEmailConfirmed() called"); _logger.Info("SetEmailConfirmed() called");
var url = $"{Setting.ApiBaseUrl}/{APIUrls.SetEmailConfirmed}"; var url = $"{Setting.ApiBaseUrl}/{APIUrls.SetEmailConfirmed}";

View File

@ -1,5 +1,6 @@
using System.Net; using System.Net;
using TIAM.Entities.Products; using TIAM.Entities.Products;
using TIAM.Models;
using TIAMWebApp.Shared.Application.Models; using TIAMWebApp.Shared.Application.Models;
namespace TIAMWebApp.Shared.Application.Interfaces namespace TIAMWebApp.Shared.Application.Interfaces
@ -7,6 +8,9 @@ namespace TIAMWebApp.Shared.Application.Interfaces
public interface ISessionService public interface ISessionService
{ {
public string? SessionId { get; set; } public string? SessionId { get; set; }
public SiteViewModel SiteViewModel { get; }
public UserSessionModel? User { get; set; } public UserSessionModel? User { get; set; }
public IPAddress? IPAddress { get; set; } public IPAddress? IPAddress { get; set; }
public bool IsAuthenticated { get; set; } public bool IsAuthenticated { get; set; }
@ -16,6 +20,6 @@ namespace TIAMWebApp.Shared.Application.Interfaces
public bool IsSysAdmin { get; set; } public bool IsSysAdmin { get; set; }
public List<Product> GetHotels(); public List<Product> GetHotels();
public Guid DriverPersmissionId { get; set; } public Guid DriverPersmissionId { get; set; }
public Task ClearAll(); public void ClearAll();
} }
} }

View File

@ -4,9 +4,13 @@ using TIAMWebApp.Shared.Application.Models.PageModels;
namespace TIAMWebApp.Shared.Application.Interfaces namespace TIAMWebApp.Shared.Application.Interfaces
{ {
public interface IUserDataService public abstract class UserDataService : IUserDataService
{ {
}
public interface IUserDataService
{
public Task<UserSessionModel> IsLoggedInAsync(Guid id); public Task<UserSessionModel> IsLoggedInAsync(Guid id);
public Task<string> AuthenticateUser(LoginModel loginModel); public Task<string> AuthenticateUser(LoginModel loginModel);
@ -25,7 +29,7 @@ namespace TIAMWebApp.Shared.Application.Interfaces
public Task<UserModelDto?> GetUserByEmailAsync(string email); public Task<UserModelDto?> GetUserByEmailAsync(string email);
Task<bool> RefreshToken(); Task<bool> RefreshToken();
public Task<bool> Logout(string refreshToken); public Task<bool> Logout(string? refreshToken);
public Task<bool> SendForgottenPasswordMail(string emailAddress); public Task<bool> SendForgottenPasswordMail(string emailAddress);

View File

@ -0,0 +1,48 @@
using System.Net;
using TIAM.Entities.Products;
using TIAM.Models;
using TIAMWebApp.Shared.Application.Interfaces;
using TIAMWebApp.Shared.Application.Models;
namespace TIAMWebApp.Shared.Application.Services;
public abstract class SessionServiceClientBase : ISessionService
{
public string? SessionId { get; set; }
public SiteViewModel SiteViewModel { get; } = new();
public UserSessionModel? User { get; set; }
public IPAddress? IPAddress { get; set; }
public bool IsAuthenticated { get; set; } = false;
public bool HasCompany { get; set; } = false;
public bool IsDriver { get; set; } = false;
public bool IsDevAdmin { get; set; } = false;
public bool IsSysAdmin { get; set; } = false;
public Guid DriverPersmissionId { get; set; } = Guid.Empty;
public virtual List<Product> GetHotels()
{
if (User != null)
{
return User.UserModelDto.Products.Count > 0 ? User.UserModelDto.Products.Where(x => x.ProductType == TIAM.Core.Enums.ProductType.Hotel).ToList() : [];
}
return [];
}
public virtual void ClearAll()
{
SessionId = string.Empty;
User = null;
IPAddress = null;
IsAuthenticated = false;
HasCompany = false;
IsDriver = false;
IsDevAdmin = false;
IsSysAdmin = false;
DriverPersmissionId = Guid.Empty;
SiteViewModel.ClearAll();
}
}