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/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 a63e8369..29d06bfa 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 909cfc1d..f54d2f16 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/LogViewerGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/LogViewerGridComponent.razor @@ -55,10 +55,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/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/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; } } }