diff --git a/TIAM.Core/Consts/TiamConst.cs b/TIAM.Core/Consts/TiamConst.cs index 14b72abd..99780cc7 100644 --- a/TIAM.Core/Consts/TiamConst.cs +++ b/TIAM.Core/Consts/TiamConst.cs @@ -5,6 +5,13 @@ namespace TIAM.Core.Consts; public static class TiamConstClient { public static Guid TransferProductId = Guid.Parse("814b5495-c2e9-4f1d-a73f-37cd5d353078"); + public static Guid[] DevAdminIds = new Guid[2]{Guid.Parse("dcf451d2-cc4c-4ac2-8c1f-da00041be1fd"), Guid.Parse("4cbaed43-2465-4d99-84f1-c8bc6b7025f7") }; + public static Guid[] SysAdmins = new Guid[3] + { + Guid.Parse("dcf451d2-cc4c-4ac2-8c1f-da00041be1fd"), + Guid.Parse("4cbaed43-2465-4d99-84f1-c8bc6b7025f7"), + Guid.Parse("540271f6-c604-4c16-8160-d5a7cafedf00") + }; } public class TiamConst : AcConst diff --git a/TIAM.Database.Test/TIAM.Database.Test.csproj b/TIAM.Database.Test/TIAM.Database.Test.csproj index 66416d4c..06d9d95e 100644 --- a/TIAM.Database.Test/TIAM.Database.Test.csproj +++ b/TIAM.Database.Test/TIAM.Database.Test.csproj @@ -22,6 +22,7 @@ + diff --git a/TIAM.Database.Test/UserDalTests.cs b/TIAM.Database.Test/UserDalTests.cs index e23691a0..7ad481a0 100644 --- a/TIAM.Database.Test/UserDalTests.cs +++ b/TIAM.Database.Test/UserDalTests.cs @@ -46,7 +46,7 @@ namespace TIAM.Database.Test //_userDal = new UserDal(_mockContext.Object); } - //[TestMethod] + [TestMethod] public async Task ConvertOldPassword() { //var loginService = new LoginService(Dal, AppSettingsConfiguration); diff --git a/TIAMMobileApp/MauiProgram.cs b/TIAMMobileApp/MauiProgram.cs index f3620ab2..02d9c466 100644 --- a/TIAMMobileApp/MauiProgram.cs +++ b/TIAMMobileApp/MauiProgram.cs @@ -56,7 +56,7 @@ namespace TIAMMobileApp builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); - builder.Services.AddScoped(); + builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddScoped(); builder.Services.AddScoped(); diff --git a/TIAMMobileApp/Services/SessionServiceMobile.cs b/TIAMMobileApp/Services/SessionServiceMobile.cs index e2ebd9fc..d4b22546 100644 --- a/TIAMMobileApp/Services/SessionServiceMobile.cs +++ b/TIAMMobileApp/Services/SessionServiceMobile.cs @@ -9,6 +9,10 @@ namespace TIAMMobileApp.Services public string? SessionId { get; set; } public UserSessionModel? User { get; set; } public IPAddress? IPAddress { get; set; } - public bool IsAuthenticated { 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; } } diff --git a/TIAMSharedUI/Pages/AppLaunchComponent.razor b/TIAMSharedUI/Pages/AppLaunchComponent.razor index dbccc56b..e24f1c4e 100644 --- a/TIAMSharedUI/Pages/AppLaunchComponent.razor +++ b/TIAMSharedUI/Pages/AppLaunchComponent.razor @@ -1,5 +1,6 @@ @* @page "/"; *@ @using Microsoft.AspNetCore.Components.Authorization +@using TIAM.Core.Consts @using TIAMWebApp.Shared.Application.Interfaces @using TIAMWebApp.Shared.Application.Models @using TIAMWebApp.Shared.Application.Utility @@ -107,9 +108,9 @@ string _userId = jsontoken.Claims.First(claim => claim.Type == JwtRegisteredClaimNames.NameId).Value; string _email = jsontoken.Claims.First(claim => claim.Type == JwtRegisteredClaimNames.Email).Value; var user = await UserDataService.IsLoggedInAsync(Guid.Parse(_userId)); - sessionService.User = user; + SaveToSessionInfo(user); _logger.Info($"Saved user in db is: {user.DisplayName}, setting autenthicated state"); - sessionService.IsAuthenticated = true; + //NavManager.NavigateTo("/"); } else @@ -121,6 +122,29 @@ } + protected void SaveToSessionInfo(UserSessionModel user) + { + sessionService.User = user; + sessionService.IsAuthenticated = true; + sessionService.HasCompany = user.UserModelDto.UserProductMappings.Count > 0; + if (user.UserModelDto.UserProductMappings.Any(x => x.ProductId == TiamConstClient.TransferProductId)) + { + sessionService.IsDriver = true; + } + if (user.UserModelDto.Id == TiamConstClient.DevAdminIds[0] || user.UserModelDto.Id == TiamConstClient.DevAdminIds[1]) + { + sessionService.IsDevAdmin = true; + } + foreach (var guid in TiamConstClient.SysAdmins) + { + if (user.UserModelDto.Id == guid) + { + sessionService.IsSysAdmin = true; + } + } + _logger.Debug($"Saved to session: IsAuthenticated: {sessionService.IsAuthenticated}, HasCompany: {sessionService.HasCompany}, IsDriver: {sessionService.IsDriver}, IsDevAdmin: {sessionService.IsDevAdmin}, IsSysAdmin: {sessionService.IsSysAdmin}"); + } + public async Task<(string, string)> GetLocalSettings() { string userDetailsStr = await SecureStorageHandler.GetFromSecureStorageAsync(nameof(Setting.UserBasicDetails)); diff --git a/TIAMSharedUI/Pages/Login.razor.cs b/TIAMSharedUI/Pages/Login.razor.cs index c9caa369..43b3d84d 100644 --- a/TIAMSharedUI/Pages/Login.razor.cs +++ b/TIAMSharedUI/Pages/Login.razor.cs @@ -10,6 +10,7 @@ using TIAMSharedUI.Resources; using Microsoft.Extensions.Localization; using AyCode.Services.Loggers; using Microsoft.AspNetCore.Components.Authorization; +using TIAM.Core.Consts; namespace TIAMSharedUI.Pages { @@ -159,6 +160,23 @@ namespace TIAMSharedUI.Pages { sessionService.User = user; sessionService.IsAuthenticated = true; + sessionService.HasCompany = user.UserModelDto.UserProductMappings.Count > 0; + if(user.UserModelDto.UserProductMappings.Any(x=>x.ProductId==TiamConstClient.TransferProductId)) + { + sessionService.IsDriver = true; + } + if (user.UserModelDto.Id == TiamConstClient.DevAdminIds[0] || user.UserModelDto.Id == TiamConstClient.DevAdminIds[1]) + { + sessionService.IsDevAdmin = true; + } + foreach (var guid in TiamConstClient.SysAdmins) + { + if (user.UserModelDto.Id == guid) + { + sessionService.IsSysAdmin = true; + } + } + BrowserConsoleLogWriter.Debug($"Saved to session: IsAuthenticated: {sessionService.IsAuthenticated}, HasCompany: {sessionService.HasCompany}, IsDriver: {sessionService.IsDriver}, IsDevAdmin: {sessionService.IsDevAdmin}, IsSysAdmin: {sessionService.IsSysAdmin}"); } } } diff --git a/TIAMSharedUI/Pages/User/CardComponents/TransferCardComponent.razor b/TIAMSharedUI/Pages/User/CardComponents/TransferCardComponent.razor new file mode 100644 index 00000000..8b090c67 --- /dev/null +++ b/TIAMSharedUI/Pages/User/CardComponents/TransferCardComponent.razor @@ -0,0 +1,44 @@ +@using BlazorAnimation +@using TIAMSharedUI.Shared.Components.Cards +@using TIAMWebApp.Shared.Application.Interfaces +@inject IServiceProviderDataService ServiceProviderDataService + +
+ +
+
+
+
+ Transfers + +
+
+ +
+
+
+
+ +
+ +
+
+
+ +@code { + [Parameter] public Guid ContextID { get; set; } + + protected override async Task OnInitializedAsync() + { + + await base.OnInitializedAsync(); + } +} diff --git a/TIAMSharedUI/Pages/User/Hotels/HotelAdmin.razor b/TIAMSharedUI/Pages/User/Hotels/HotelAdmin.razor index f5577435..c048f79b 100644 --- a/TIAMSharedUI/Pages/User/Hotels/HotelAdmin.razor +++ b/TIAMSharedUI/Pages/User/Hotels/HotelAdmin.razor @@ -1,10 +1,9 @@ -@page "/user/hoteladmin" +@page "/user/hoteladmin/{id}" @using TIAMSharedUI.Shared @using TIAMWebApp.Shared.Application.Interfaces; @layout AdminLayout -@inject IPopulationStructureDataProvider DataProvider -@inject ISupplierService SupplierService @inject IUserDataService UserDataService +@inject ISessionService SessionService HotelAdmin
@@ -16,179 +15,31 @@
- +
- - @*
-
-
-
-
-
- Panel title -

Subtitle

-
- -
-
-
-
-
-
Some info
-

Budapest, Dózsa György út 35, 1146

-
-
- -
- -
-
    -
  • - PLACED -
  • -
  • WAITING FOR PICK UP
  • -
  • - FINISHED -
  • -
- -
-

Some conclusion

-
-
- -
-
-
-
-
-
-
- Panel title -

Subtitle

-
- -
-
-
-
-
-
Some info
-

Budapest, Dózsa György út 35, 1146

-
-
- -
- -
-
    -
  • - PLACED -
  • -
  • WAITING FOR PICK UP
  • -
  • - FINISHED -
  • -
- -
-

Some conclusion

-
-
- -
-
-
-
-
-
-
- Panel title -

Subtitle

-
- -
-
-
-
-
-
Some info
-

Budapest, Dózsa György út 35, 1146

-
-
- -
- -
-
    -
  • - PLACED -
  • -
  • WAITING FOR PICK UP
  • -
  • - FINISHED -
  • -
- -
-

Some conclusion

-
-
- -
-
-
- -
- -
*@ -
@code { - string Id = "2312-32132121-32123"; + [Parameter] public Guid id { get; set; } bool isUserLoggedIn; int userType = 0; protected override void OnInitialized() { + //check if Id matches with userproductmapping + if (!SessionService.IsAuthenticated) + { + return; + } + var check = SessionService.User.UserModelDto.UserProductMappings.Any(x => x.ProductId == id); + if (!check) + { + return; + } base.OnInitialized(); } diff --git a/TIAMSharedUI/Pages/User/Hotels/HotelAdmin.razor.cs b/TIAMSharedUI/Pages/User/Hotels/HotelAdmin.razor.cs deleted file mode 100644 index c785adad..00000000 --- a/TIAMSharedUI/Pages/User/Hotels/HotelAdmin.razor.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace TIAMSharedUI.Pages.User -{ - public partial class Home - { - } -} diff --git a/TIAMSharedUI/Pages/User/Hotels/HotelComponent.razor.cs b/TIAMSharedUI/Pages/User/Hotels/HotelComponent.razor.cs index 945b21d0..30dfbc31 100644 --- a/TIAMSharedUI/Pages/User/Hotels/HotelComponent.razor.cs +++ b/TIAMSharedUI/Pages/User/Hotels/HotelComponent.razor.cs @@ -15,7 +15,7 @@ namespace TIAMSharedUI.Pages.User.Hotels { [Parameter] - public string? Id { get; set; } + public Guid Id { get; set; } [Inject] ISupplierService SupplierService { get; set; } diff --git a/TIAMSharedUI/Pages/User/MyServiceProviders.razor b/TIAMSharedUI/Pages/User/MyServiceProviders.razor index e3e1f7b8..a7181a57 100644 --- a/TIAMSharedUI/Pages/User/MyServiceProviders.razor +++ b/TIAMSharedUI/Pages/User/MyServiceProviders.razor @@ -1,6 +1,8 @@ @page "/user/properties" +@using BlazorAnimation @using TIAM.Entities.ServiceProviders @using TIAM.Resources +@using TIAM.Services @using TIAMSharedUI.Shared @using TIAMWebApp.Shared.Application.Interfaces @using TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels @@ -15,62 +17,37 @@ @inject ISessionService SessionService @inject IServiceProviderDataService ServiceProviderDataService @inject AdminSignalRClient AdminSignalRClient; +User permissions -

Properties

+
+

Drivers

+

Manage drivers here!

+
-
-
-
-
-
-
-
- Service providers list +
+
+
+ +
+
+
+
-
- -
-
-
- -
-
- - - - @* - - - - - - - *@ + CustomizeEditModel="Grid_CustomizeEditModel" + EditMode="GridEditMode.EditRow"> @@ -78,30 +55,22 @@ @context.Value - - - - + + + @{ - @(((Company)context.DataItem).Profile.Address.AddressText) +

@(((Company)context.DataItem).Profile.Address.AddressText)

}
- -
-
-

Some conclusion

-
- -
- +
- +
@@ -119,11 +88,10 @@ bool EulaAccepted { get; set; } bool EulaVisible { get; set; } + private Guid[] contextIds = new Guid[0]; void CancelCreateClick() { - - EulaVisible = false; } void EulaPopupClosed() @@ -161,12 +129,18 @@ _logger = new LoggerClient(LogWriters.ToArray()); var myId = SessionService.User.UserId; - - ServiceProviderDataService.GetPropertiesByOwnerIdAsync(myId, companyPropertiesByOwner => - { - _logger.DetailConditional($"companyPropertiesByOwner count: {companyPropertiesByOwner?.Count.ToString() ?? "NULL"}"); - }).Forget(); + contextIds = new Guid[1]; + contextIds[0] = myId; + // ServiceProviderDataService.GetPropertiesByOwnerIdAsync(myId, companyPropertiesByOwner => + // { + // _logger.DetailConditional($"companyPropertiesByOwner count: {companyPropertiesByOwner?.Count.ToString() ?? "NULL"}"); + // }).Forget(); return base.OnInitializedAsync(); } + + void ColumnChooserButton_Click() + { + _gridCompany.ShowColumnChooser(); + } } diff --git a/TIAMSharedUI/Pages/User/ServiceProvider.razor b/TIAMSharedUI/Pages/User/ServiceProvider.razor index 4e145205..f678d7e6 100644 --- a/TIAMSharedUI/Pages/User/ServiceProvider.razor +++ b/TIAMSharedUI/Pages/User/ServiceProvider.razor @@ -21,7 +21,7 @@ Admin - Companies
-

Company: @Id

+

Company

Manage your service provider details

diff --git a/TIAMSharedUI/Pages/User/SysAdmins/LogViewerGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/LogViewerGridComponent.razor index 90e0263d..dc0784e8 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/LogViewerGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/LogViewerGridComponent.razor @@ -58,10 +58,10 @@ @{ var a = ((LogItemViewerModel)context.DataItem); } -
@($"{a.CategoryName}->{a.CallerName}")
-

@($"{a.Text}")

+

@($"{a.CategoryName}->{a.CallerName}")

+

@($"{a.Text}")


Exception:
-

@a.Exception

+

@a.Exception

diff --git a/TIAMSharedUI/Shared/Components/Cards/AdressCard.cs b/TIAMSharedUI/Shared/Components/Cards/AdressCard.cs new file mode 100644 index 00000000..c6fb77fc --- /dev/null +++ b/TIAMSharedUI/Shared/Components/Cards/AdressCard.cs @@ -0,0 +1,31 @@ +using Microsoft.AspNetCore.Components; +using TIAM.Entities.Addresses; +using TIAM.Entities.Transfers; +using TIAM.Services; + +namespace TIAMSharedUI.Shared.Components.Cards; + +public class AddressCard : CardBase
+{ + public AddressCard() : base() + { + GetAllMessageTag = SignalRTags.GetAddressesByContextId; + //AddMessageTag = SignalRTags.AddAddress; + UpdateMessageTag = SignalRTags.UpdateAddress; + //RemoveMessageTag = SignalRTags.RemoveAddress; - nem törlünk címet - J. + } + + protected override Task OnParametersSetAsync() + { + if (!IsFirstInitializeParameters) + { + //ShowFilterRow = true; + //ShowGroupPanel = true; + //AllowSort = false; + + //etc... + } + + return base.OnParametersSetAsync(); + } +} \ No newline at end of file diff --git a/TIAMSharedUI/Shared/Components/Cards/CardBase.cs b/TIAMSharedUI/Shared/Components/Cards/CardBase.cs new file mode 100644 index 00000000..816ab1c5 --- /dev/null +++ b/TIAMSharedUI/Shared/Components/Cards/CardBase.cs @@ -0,0 +1,180 @@ +using AyCode.Blazor.Components.Services; +using AyCode.Core.Enums; +using AyCode.Core.Helpers; +using AyCode.Core.Interfaces; +using AyCode.Core; +using AyCode.Services.SignalRs; +using DevExpress.Blazor; +using DevExpress.ClipboardSource.SpreadsheetML; +using DevExpress.Data.Design; +using Microsoft.AspNetCore.Components; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TIAMSharedUI.Shared.Components.Grids; +using TIAMWebApp.Shared.Application.Utility; +using AyCode.Core.Extensions; +using AyCode.Utils.Extensions; + +namespace TIAMSharedUI.Shared.Components.Cards +{ + public class CardBase : ComponentBase where TDataItem : class, IId + { + public CardBase() { } + + protected bool IsFirstInitializeParameters; + private SignalRDataSource _dataSource = null!; + private IList _dataSourceParam = []; + private string _cardLogName; + + + [Parameter] public LoggerClient Logger { get; set; } + [Parameter] public string CardName { get; set; } + [Parameter] public Guid[]? ContextIds { get; set; } + + private string? _filterText = null; + + [Parameter] + public string? FilterText + { + get => _filterText; + set + { + _filterText = value; + + if (_dataSource != null! && _dataSource.FilterText != value) + { + _dataSource.FilterText = value; + LoadDataSourceAsync().Forget(); + } + } + } + + [Parameter] public AcSignalRClientBase SignalRClient { get; set; } + + [Parameter] public int GetAllMessageTag { get; set; } + [Parameter] public int GetItemMessageTag { get; set; } + [Parameter] public int AddMessageTag { get; set; } + [Parameter] public int UpdateMessageTag { get; set; } + [Parameter] public int RemoveMessageTag { get; set; } + + [Parameter] public EventCallback> OnDataSourceChanged { get; set; } + + + /// + /// After the server has responded! + /// + [Parameter] + public EventCallback OnCardItemChanged { get; set; } + + [Parameter] + [DefaultValue(null)] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Usage", "BL0007:Component parameters should be auto properties", Justification = "")] + public IList DataSource + { + get + { + if (_dataSource == null) + { + Logger.Error($"{_cardLogName} Use the DataSource parameter instead of Data!"); + throw new NullReferenceException($"{_cardLogName} Use the DataSource parameter instead of Data!"); + } + + return _dataSource!; + } + set => _dataSourceParam = value; + } + + protected override async Task OnInitializedAsync() + { + if (Logger == null) + throw new NullReferenceException($"[{GetType().Name}] Logger == null"); + + if (SignalRClient == null) + { + Logger.Error($"[{GetType().Name}] SignalRClient == null"); + throw new NullReferenceException($"[{GetType().Name}] SignalRClient == null"); + } + + var crudTags = new SignalRCrudTags(GetAllMessageTag, GetItemMessageTag, AddMessageTag, UpdateMessageTag, RemoveMessageTag); + _dataSource = new SignalRDataSource(SignalRClient, crudTags, ContextIds); + _dataSource.FilterText = FilterText; + + //Data = _dataSource; + + _dataSource.OnDataSourceLoaded += OnDataSourceLoaded; + + await base.OnInitializedAsync(); + } + + + private Task OnDataSourceLoaded() + { + Logger.Debug($"{_cardLogName} OnDataSourceLoaded; Count: {_dataSource.Count}"); + + //_dataSource.LoadItem(_dataSource.First().Id).Forget(); + return OnDataSourceChanged.InvokeAsync(_dataSource); + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + await base.OnAfterRenderAsync(firstRender); + + if (firstRender) + { + if (_dataSourceParam.Count > 0) await _dataSource.LoadDataSource(_dataSourceParam); + else _dataSource.LoadDataSourceAsync(true).Forget(); + } + } + + + + protected override Task OnParametersSetAsync() + + { + if (!IsFirstInitializeParameters) + { + //if (typeof(TDataItem) is IId || typeof(TDataItem) is IId) + + + IsFirstInitializeParameters = true; + } + + return Task.FromResult(base.OnParametersSetAsync); + } + + + protected override void OnParametersSet() + { + base.OnParametersSet(); + + if (CardName.IsNullOrWhiteSpace()) CardName = $"{typeof(TDataItem).Name}Card"; + + _cardLogName = $"[{CardName}]"; + + } + + public Task AddOrUpdateDataItem(TDataItem dataItem) => _dataSource.AddOrUpdate(dataItem, true); + + public Task RemoveDataItem(TDataItem dataItem) => _dataSource.Remove(dataItem, true); + //public Task RemoveDataItem(TDataItem dataItem, int messageTag) => PostDataToServerAsync(dataItem, messageTag, TrackingState.Remove); + + public Task RemoveDataItem(Guid id) => RemoveDataItem(id, RemoveMessageTag); + + public Task RemoveDataItem(Guid id, int messageTag) + { + var dataItem = _dataSource.FirstOrDefault(x => x.Id == id); + if (dataItem == null) return Task.CompletedTask; + + return _dataSource.Remove(dataItem, true); + } + + public Task LoadDataSourceAsync() + { + return _dataSource.LoadDataSourceAsync(false); + } + } +} diff --git a/TIAMSharedUI/Shared/Components/Cards/TransferCard.cs b/TIAMSharedUI/Shared/Components/Cards/TransferCard.cs new file mode 100644 index 00000000..da30b84e --- /dev/null +++ b/TIAMSharedUI/Shared/Components/Cards/TransferCard.cs @@ -0,0 +1,30 @@ +using Microsoft.AspNetCore.Components; +using TIAM.Entities.Addresses; +using TIAM.Entities.Transfers; +using TIAM.Services; +using TIAMSharedUI.Shared.Components.Cards; + +namespace TIAMSharedUI.Shared.Components.Cards; + +public class TransferCard : CardBase +{ + public TransferCard() : base() + { + GetAllMessageTag = SignalRTags.GetTransfersByCompanyId; + + } + + protected override Task OnParametersSetAsync() + { + if (!IsFirstInitializeParameters) + { + //ShowFilterRow = true; + //ShowGroupPanel = true; + //AllowSort = false; + + //etc... + } + + return base.OnParametersSetAsync(); + } +} \ No newline at end of file diff --git a/TIAMSharedUI/Shared/Users/AdminNavMenu.razor b/TIAMSharedUI/Shared/Users/AdminNavMenu.razor index a26491c4..cc50809c 100644 --- a/TIAMSharedUI/Shared/Users/AdminNavMenu.razor +++ b/TIAMSharedUI/Shared/Users/AdminNavMenu.razor @@ -1,6 +1,16 @@ -@using TIAMWebApp.Shared.Application.Interfaces +@using AyCode.Services.Loggers +@using Microsoft.AspNetCore.Components.Authorization +@using Newtonsoft.Json +@using TIAM.Core.Loggers +@using TIAMWebApp.Shared.Application.Interfaces @using AyCode.Interfaces.StorageHandlers; +@using TIAMWebApp.Shared.Application.Utility @inject ISecureStorageHandler SecureStorageHandler +@inject ISessionService SessionService +@inject IUserDataService UserDataService +@inject AuthenticationStateProvider AuthStateProvider +@inject NavigationManager NavigationManager +@inject IEnumerable LogWriters
@@ -12,23 +22,29 @@ - - - - - - - - - - - + + + + + + + + + + + - - - - - + + + + + + + + + + + @@ -184,9 +200,29 @@ private bool expandHotelAdminNav = false; private string? NavMenuCssClass => collapseNavMenu ? "collapse" : null; + private bool IsDevAdmin; + private bool IsSysAdmin; + private bool IsDriver; + + private ILogger _logger; + MenuDisplayMode DisplayMode { get; set; } = MenuDisplayMode.Auto; Orientation Orientation { get; set; } = Orientation.Horizontal; + protected override void OnInitialized() + { + _logger = new LoggerClient(LogWriters.ToArray()); + _logger.Debug($"UserId: {SessionService.User.UserModelDto.Id}"); + IsDevAdmin = SessionService.IsDevAdmin; + _logger.Debug($"UserId: {SessionService.IsDevAdmin}"); + IsSysAdmin = SessionService.IsSysAdmin; + _logger.Debug($"UserId: {SessionService.IsSysAdmin}"); + IsDriver = SessionService.IsDriver; + _logger.Debug($"UserId: {SessionService.IsDriver}"); + + base.OnInitialized(); + } + private void ToggleNavMenu() { collapseNavMenu = !collapseNavMenu; @@ -197,9 +233,22 @@ } - private void SignOut() + private async Task SignOut() { - SecureStorageHandler.ClearAllSecureStorageAsync(); + bool serverResult; + string userDetailsStr = await SecureStorageHandler.GetFromSecureStorageAsync(nameof(Setting.UserBasicDetails)); + if (!string.IsNullOrEmpty(userDetailsStr)) + { + var userBasicDetail = JsonConvert.DeserializeObject(userDetailsStr); + serverResult = await UserDataService.Logout(userBasicDetail.RefreshToken); + } + await SecureStorageHandler.ClearAllSecureStorageAsync(); + var result = await AuthStateProvider.GetAuthenticationStateAsync(); + + SessionService.User = null; + SessionService.IsAuthenticated = false; + NavigationManager.NavigateTo("/"); + } } diff --git a/TIAMSharedUI/TIAMSharedUI.csproj b/TIAMSharedUI/TIAMSharedUI.csproj index c274a95c..0e2933b2 100644 --- a/TIAMSharedUI/TIAMSharedUI.csproj +++ b/TIAMSharedUI/TIAMSharedUI.csproj @@ -71,6 +71,7 @@ + diff --git a/TIAMWebApp/Client/Program.cs b/TIAMWebApp/Client/Program.cs index 8e5ec20e..c7bbf93d 100644 --- a/TIAMWebApp/Client/Program.cs +++ b/TIAMWebApp/Client/Program.cs @@ -27,7 +27,7 @@ builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddBlazoredLocalStorage(); -builder.Services.AddScoped(); +builder.Services.AddSingleton(); builder.Services.AddSingleton(); diff --git a/TIAMWebApp/Client/Services/SessionServiceWeb.cs b/TIAMWebApp/Client/Services/SessionServiceWeb.cs index 6aa6248f..d7200ba4 100644 --- a/TIAMWebApp/Client/Services/SessionServiceWeb.cs +++ b/TIAMWebApp/Client/Services/SessionServiceWeb.cs @@ -10,5 +10,9 @@ namespace TIAMWebApp.Client.Services 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; } } diff --git a/TIAMWebApp/Shared/Interfaces/ISessionService.cs b/TIAMWebApp/Shared/Interfaces/ISessionService.cs index 7d40c16c..7baf75c5 100644 --- a/TIAMWebApp/Shared/Interfaces/ISessionService.cs +++ b/TIAMWebApp/Shared/Interfaces/ISessionService.cs @@ -9,5 +9,12 @@ namespace TIAMWebApp.Shared.Application.Interfaces 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; } } } diff --git a/TourIAmProject.sln b/TourIAmProject.sln index cce08d4f..cf10c9ab 100644 --- a/TourIAmProject.sln +++ b/TourIAmProject.sln @@ -50,7 +50,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TIAM.Services.Server.Tests" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TIAM.Models.Server", "TIAM.Models.Server\TIAM.Models.Server.csproj", "{D21032B0-B25F-495E-B784-1D3166FE720C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tiam.Services.Client.Tests", "Tiam.Services.Client.Tests\Tiam.Services.Client.Tests.csproj", "{EF40BC68-945A-47ED-8739-2D0BCD415019}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tiam.Services.Client.Tests", "Tiam.Services.Client.Tests\Tiam.Services.Client.Tests.csproj", "{EF40BC68-945A-47ED-8739-2D0BCD415019}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution