From 0fbe6492ee166401dda947660cc0056b79cde35c Mon Sep 17 00:00:00 2001 From: "Amir.H Khademi" Date: Wed, 29 May 2024 12:55:05 +0330 Subject: [PATCH] fix(Pages) , feat(NotPermitted) --- Netina.AdminPanel.PWA/App.razor | 2 - .../Components/Originals/NotPermittedUi.razor | 12 + .../Originals/RichTextEditorUi.razor | 7 +- .../Components/Originals/SideBarUi.razor | 6 +- .../Dialogs/BlogCategoryActionDialogBox.razor | 2 + .../DigikalaProductActionDialogBox.razor.cs | 2 +- .../Dialogs/DiscountActionDialogBox.razor.cs | 4 +- .../Dialogs/OrderActionDialogBox.razor.cs | 9 +- .../Dialogs/ProductActionDialogBox.razor.cs | 8 +- .../ProductCategoryActionDialogBox.razor | 217 +++++++++--------- .../Dialogs/RoleActionDialogBox.razor.cs | 4 +- .../Dialogs/ShippingActionDialogBox.razor.cs | 4 +- .../Dialogs/UserActionDialogBox.razor.cs | 4 +- Netina.AdminPanel.PWA/Layout/MainLayout.razor | 45 ++-- Netina.AdminPanel.PWA/Models/BaseViewModel.cs | 32 ++- .../Netina.AdminPanel.PWA.csproj | 4 +- .../Pages/BlogCategoriesPage.razor | 2 +- .../Pages/BlogCategoriesPage.razor.cs | 2 +- Netina.AdminPanel.PWA/Pages/BlogsPage.razor | 2 +- .../Pages/BlogsPage.razor.cs | 5 +- Netina.AdminPanel.PWA/Pages/BrandsPage.razor | 2 +- .../Pages/BrandsPage.razor.cs | 2 +- .../Pages/CategoriesPage.razor | 2 +- .../Pages/CategoriesPage.razor.cs | 2 +- .../Pages/DiscountPage.razor.cs | 2 +- .../Pages/FaqManagementPage.razor.cs | 2 +- Netina.AdminPanel.PWA/Pages/Home.razor | 1 + Netina.AdminPanel.PWA/Pages/Home.razor.cs | 2 +- .../Pages/MarketerManagementPage.razor.cs | 2 +- Netina.AdminPanel.PWA/Pages/OrdersPage.razor | 6 +- .../Pages/OrdersPage.razor.cs | 10 +- .../Pages/PagesManagementPage.razor.cs | 2 +- .../Pages/PaymentsPage.razor.cs | 2 +- .../ManageNavMenuPage.razor.cs | 2 +- .../Pages/ProductsPage.razor | 2 +- .../Pages/ProductsPage.razor.cs | 8 +- .../Pages/ShippingPage.razor.cs | 2 +- Netina.AdminPanel.PWA/Program.cs | 2 +- .../Utilities/PoliciesUtility.cs | 18 ++ Netina.AdminPanel.PWA/_Imports.razor | 3 +- .../wwwroot/appsettings.Development.json | 7 +- Netina.AdminPanel.PWA/wwwroot/css/app.min.css | 14 +- .../wwwroot/css/app.output.css | 21 +- .../wwwroot/css/content-styles.css | 8 +- 44 files changed, 281 insertions(+), 216 deletions(-) create mode 100644 Netina.AdminPanel.PWA/Components/Originals/NotPermittedUi.razor create mode 100644 Netina.AdminPanel.PWA/Utilities/PoliciesUtility.cs diff --git a/Netina.AdminPanel.PWA/App.razor b/Netina.AdminPanel.PWA/App.razor index 0c3c987..4a275f8 100644 --- a/Netina.AdminPanel.PWA/App.razor +++ b/Netina.AdminPanel.PWA/App.razor @@ -1,8 +1,6 @@ @using Netina.AdminPanel.PWA.Models @using Netina.AdminPanel.PWA.Layout @using Netina.AdminPanel.PWA.Pages -@inject NavigationManager NavigationManager -@inject IConfiguration Configuration diff --git a/Netina.AdminPanel.PWA/Components/Originals/NotPermittedUi.razor b/Netina.AdminPanel.PWA/Components/Originals/NotPermittedUi.razor new file mode 100644 index 0000000..4f1382e --- /dev/null +++ b/Netina.AdminPanel.PWA/Components/Originals/NotPermittedUi.razor @@ -0,0 +1,12 @@ +@if (!IsPermitted) +{ +
+ شما اجازه دسترسی به این بخش را ندارد +
+} + +@code { + + [Parameter] + public bool IsPermitted { get; set; } +} diff --git a/Netina.AdminPanel.PWA/Components/Originals/RichTextEditorUi.razor b/Netina.AdminPanel.PWA/Components/Originals/RichTextEditorUi.razor index 278d07e..00c5d41 100644 --- a/Netina.AdminPanel.PWA/Components/Originals/RichTextEditorUi.razor +++ b/Netina.AdminPanel.PWA/Components/Originals/RichTextEditorUi.razor @@ -6,7 +6,11 @@ @@ -94,7 +98,6 @@ var lDotNetReference = DotNetObjectReference.Create(this); await JsRuntime.InvokeVoidAsync("GLOBAL.SetDotnetReference", lDotNetReference); - await JsRuntime.InvokeVoidAsync("window.lunchEditor", Text); await base.OnAfterRenderAsync(firstRender); } diff --git a/Netina.AdminPanel.PWA/Components/Originals/SideBarUi.razor b/Netina.AdminPanel.PWA/Components/Originals/SideBarUi.razor index fd6c2c3..bb44aeb 100644 --- a/Netina.AdminPanel.PWA/Components/Originals/SideBarUi.razor +++ b/Netina.AdminPanel.PWA/Components/Originals/SideBarUi.razor @@ -3,14 +3,12 @@ @inject IUserUtility UserUtility - داشبورد @if (isShop) { - فروش + فروش } @if (isShop) { @@ -109,10 +107,12 @@ @code { private bool isShop = true; + private List _permissions; protected override async Task OnInitializedAsync() { try { + _permissions = await UserUtility.GetPermissionsAsync() ?? new List(); var token = await UserUtility.GetBearerTokenAsync(); if (token == null) { diff --git a/Netina.AdminPanel.PWA/Dialogs/BlogCategoryActionDialogBox.razor b/Netina.AdminPanel.PWA/Dialogs/BlogCategoryActionDialogBox.razor index 1fcfa6b..75e7db4 100644 --- a/Netina.AdminPanel.PWA/Dialogs/BlogCategoryActionDialogBox.razor +++ b/Netina.AdminPanel.PWA/Dialogs/BlogCategoryActionDialogBox.razor @@ -109,6 +109,8 @@ _isProcessing = true; await Task.Delay(1000); var token = await UserUtility.GetBearerTokenAsync(); + if (token == null) + throw new Exception("Token is null"); var request = new BlogCategorySDto {Id = BlogCategory.Id , Name = _name, Description = _description }; await RestWrapper.CrudApiRest(Address.BlogCategoryController).Update(request, token); MudDialog.Close(); diff --git a/Netina.AdminPanel.PWA/Dialogs/DigikalaProductActionDialogBox.razor.cs b/Netina.AdminPanel.PWA/Dialogs/DigikalaProductActionDialogBox.razor.cs index 7f746fa..3b5f1e2 100644 --- a/Netina.AdminPanel.PWA/Dialogs/DigikalaProductActionDialogBox.razor.cs +++ b/Netina.AdminPanel.PWA/Dialogs/DigikalaProductActionDialogBox.razor.cs @@ -17,7 +17,7 @@ public class DigikalaProductActionDialogBoxViewModel : BaseViewModel IRestWrapper restWrapper, IUserUtility userUtility, IDialogService dialogService, - MudDialogInstance mudDialog) + MudDialogInstance mudDialog) : base(userUtility) { _snackbar = snackbar; _restWrapper = restWrapper; @@ -29,7 +29,7 @@ public class DiscountActionDialogBoxViewModel : BaseViewModel IUserUtility userUtility, IDialogService dialogService, MudDialogInstance mudDialog, - DiscountSDto discount) + DiscountSDto discount) : base(userUtility) { _snackbar = snackbar; _restWrapper = restWrapper; diff --git a/Netina.AdminPanel.PWA/Dialogs/OrderActionDialogBox.razor.cs b/Netina.AdminPanel.PWA/Dialogs/OrderActionDialogBox.razor.cs index fa0599d..39b0547 100644 --- a/Netina.AdminPanel.PWA/Dialogs/OrderActionDialogBox.razor.cs +++ b/Netina.AdminPanel.PWA/Dialogs/OrderActionDialogBox.razor.cs @@ -14,9 +14,12 @@ public class OrderActionDialogBoxViewModel : BaseViewModel private readonly IPrintingService _printingService; private readonly IJSRuntime _jsRuntime; - public OrderActionDialogBoxViewModel(ISnackbar snackbar, IRestWrapper restWrapper, IUserUtility userUtility, IDialogService dialogService, + public OrderActionDialogBoxViewModel(ISnackbar snackbar, + IRestWrapper restWrapper, + IUserUtility userUtility, + IDialogService dialogService, MudDialogInstance mudDialog, - IPrintingService printingService, IJSRuntime jsRuntime) + IPrintingService printingService, IJSRuntime jsRuntime) : base(userUtility) { _snackbar = snackbar; _restWrapper = restWrapper; @@ -33,7 +36,7 @@ public class OrderActionDialogBoxViewModel : BaseViewModel MudDialogInstance mudDialog, OrderSDto order, IPrintingService printingService, - IJSRuntime jsRuntime) + IJSRuntime jsRuntime) : base(userUtility) { _snackbar = snackbar; _restWrapper = restWrapper; diff --git a/Netina.AdminPanel.PWA/Dialogs/ProductActionDialogBox.razor.cs b/Netina.AdminPanel.PWA/Dialogs/ProductActionDialogBox.razor.cs index 1adf71a..2ed2574 100644 --- a/Netina.AdminPanel.PWA/Dialogs/ProductActionDialogBox.razor.cs +++ b/Netina.AdminPanel.PWA/Dialogs/ProductActionDialogBox.razor.cs @@ -8,7 +8,11 @@ public class ProductActionDialogBoxViewModel : BaseViewModel private readonly IDialogService _dialogService; private readonly MudDialogInstance _mudDialog; - public ProductActionDialogBoxViewModel(ISnackbar snackbar, IRestWrapper restWrapper, IUserUtility userUtility, IDialogService dialogService, MudDialogInstance mudDialog) + public ProductActionDialogBoxViewModel(ISnackbar snackbar, + IRestWrapper restWrapper, + IUserUtility userUtility, + IDialogService dialogService, + MudDialogInstance mudDialog) : base(userUtility) { _snackbar = snackbar; _restWrapper = restWrapper; @@ -21,7 +25,7 @@ public class ProductActionDialogBoxViewModel : BaseViewModel IUserUtility userUtility, IDialogService dialogService, MudDialogInstance mudDialog, - ProductSDto product) + ProductSDto product) : base(userUtility) { _snackbar = snackbar; _restWrapper = restWrapper; diff --git a/Netina.AdminPanel.PWA/Dialogs/ProductCategoryActionDialogBox.razor b/Netina.AdminPanel.PWA/Dialogs/ProductCategoryActionDialogBox.razor index 28ee5ef..216c27c 100644 --- a/Netina.AdminPanel.PWA/Dialogs/ProductCategoryActionDialogBox.razor +++ b/Netina.AdminPanel.PWA/Dialogs/ProductCategoryActionDialogBox.razor @@ -5,124 +5,125 @@ - + اطلاعات کلی اطلاعات کلی دسته بندی محصول را به دقت وارد کنید - - - - - - - - - - - - - - - -
- -

منتظر بمانید

-
-
-
-
- -

@e.Name

-
-
-
- - + + + + + + + + + + + + + + + + +
+ +

منتظر بمانید

+
+
+
+
+ +

@e.Name

+
+
+
+ + - تصاویر برند - می توانید برای برند چند تصویر اپلود کنید - - - - - @foreach (var item in ViewModel.Files) - { -
- - - - @if (item.IsHeader) - { -

هدر

- } - @if (item.IsPrimary) - { -

اصلی

- } -
- } - -
-
- - - - - توضیحات تکمیلی - می توانید توضیحاتــ تکمیلی محصول را کامل وارد کنید + تصاویر برند + می توانید برای برند چند تصویر اپلود کنید -
- -
-
-
+ + + + @foreach (var item in ViewModel.Files) + { +
+ - - + + @if (item.IsHeader) + { +

هدر

+ } + @if (item.IsPrimary) + { +

اصلی

+ } +
+ } + +
+
+ + + + + توضیحات تکمیلی + می توانید توضیحاتــ تکمیلی محصول را کامل وارد کنید + +
+ +
+
+
+ +
+
+ + + + + @if (ViewModel.IsEditing) + { + + } + else + { + + } + + بستن + +
- - - - - @if (ViewModel.IsEditing) - { - - } - else - { - - } - - بستن - -
-@code +@code { [CascadingParameter] @@ -136,7 +137,7 @@ protected override async Task OnInitializedAsync() { if (Category == null) - ViewModel = new ProductCategoryActionDialogBoxViewModel(Snackbar, RestWrapper, UserUtility, MudDialog,DialogService); + ViewModel = new ProductCategoryActionDialogBoxViewModel(Snackbar, RestWrapper, UserUtility, MudDialog, DialogService); else ViewModel = new ProductCategoryActionDialogBoxViewModel(Snackbar, RestWrapper, UserUtility, MudDialog, DialogService, Category); await ViewModel.InitializeAsync(); diff --git a/Netina.AdminPanel.PWA/Dialogs/RoleActionDialogBox.razor.cs b/Netina.AdminPanel.PWA/Dialogs/RoleActionDialogBox.razor.cs index efa0779..8f459f9 100644 --- a/Netina.AdminPanel.PWA/Dialogs/RoleActionDialogBox.razor.cs +++ b/Netina.AdminPanel.PWA/Dialogs/RoleActionDialogBox.razor.cs @@ -16,7 +16,7 @@ public class RoleActionDialogBoxViewModel : BaseViewModel IRestWrapper restWrapper, IUserUtility userUtility, IDialogService dialogService, - MudDialogInstance mudDialog) + MudDialogInstance mudDialog) : base(userUtility) { _snackbar = snackbar; _restWrapper = restWrapper; @@ -31,7 +31,7 @@ public class RoleActionDialogBoxViewModel : BaseViewModel IUserUtility userUtility, IDialogService dialogService, MudDialogInstance mudDialog, - ApplicationRole role) + ApplicationRole role) : base(userUtility) { _snackbar = snackbar; _restWrapper = restWrapper; diff --git a/Netina.AdminPanel.PWA/Dialogs/ShippingActionDialogBox.razor.cs b/Netina.AdminPanel.PWA/Dialogs/ShippingActionDialogBox.razor.cs index 4839e47..fd3f3e3 100644 --- a/Netina.AdminPanel.PWA/Dialogs/ShippingActionDialogBox.razor.cs +++ b/Netina.AdminPanel.PWA/Dialogs/ShippingActionDialogBox.razor.cs @@ -15,7 +15,7 @@ public class ShippingActionDialogBoxViewModel : BaseViewModel IRestWrapper restWrapper, IUserUtility userUtility, IDialogService dialogService, - MudDialogInstance mudDialog) + MudDialogInstance mudDialog) : base(userUtility) { _snackbar = snackbar; _restWrapper = restWrapper; @@ -29,7 +29,7 @@ public class ShippingActionDialogBoxViewModel : BaseViewModel IUserUtility userUtility, IDialogService dialogService, MudDialogInstance mudDialog, - ShippingSDto shipping) + ShippingSDto shipping) : base(userUtility) { _snackbar = snackbar; _restWrapper = restWrapper; diff --git a/Netina.AdminPanel.PWA/Dialogs/UserActionDialogBox.razor.cs b/Netina.AdminPanel.PWA/Dialogs/UserActionDialogBox.razor.cs index 00c02e4..563cb0b 100644 --- a/Netina.AdminPanel.PWA/Dialogs/UserActionDialogBox.razor.cs +++ b/Netina.AdminPanel.PWA/Dialogs/UserActionDialogBox.razor.cs @@ -16,7 +16,7 @@ public class UserActionDialogBoxViewModel : BaseViewModel IRestWrapper restWrapper, IUserUtility userUtility, IDialogService dialogService, - MudDialogInstance mudDialog) + MudDialogInstance mudDialog) : base(userUtility) { _snackbar = snackbar; _restWrapper = restWrapper; @@ -30,7 +30,7 @@ public class UserActionDialogBoxViewModel : BaseViewModel IUserUtility userUtility, IDialogService dialogService, MudDialogInstance mudDialog, - ApplicationUserSDto user) + ApplicationUserSDto user) : base(userUtility) { _snackbar = snackbar; _restWrapper = restWrapper; diff --git a/Netina.AdminPanel.PWA/Layout/MainLayout.razor b/Netina.AdminPanel.PWA/Layout/MainLayout.razor index 26090e4..98e8b54 100644 --- a/Netina.AdminPanel.PWA/Layout/MainLayout.razor +++ b/Netina.AdminPanel.PWA/Layout/MainLayout.razor @@ -3,11 +3,11 @@ @using Netina.AdminPanel.PWA.Models @inherits LayoutComponentBase -@inject IPWAUpdaterService PwaUpdaterService @inject NavigationManager NavigationManager @inject IUserUtility UserUtility -@inject IJSRuntime Js + - - + - - - + + + - + - + @_user?.FullName @_user?.PhoneNumber - + - + ToggledIcon="@Icons.Material.Filled.LightMode" ToggledColor="@Color.Default" ToggledTitle="روشن"/> + - + - + @@ -77,28 +77,30 @@
- +
+ - - - + + +
- +
- +
-
+
+ @code { @@ -111,6 +113,7 @@ await UserUtility.LogoutAsync(); NavigationManager.NavigateTo("login", true, true); } + protected override void OnInitialized() { string? version = typeof(Program)?.Assembly.GetName()?.Version?.ToString(); diff --git a/Netina.AdminPanel.PWA/Models/BaseViewModel.cs b/Netina.AdminPanel.PWA/Models/BaseViewModel.cs index 3d7de06..c7165dd 100644 --- a/Netina.AdminPanel.PWA/Models/BaseViewModel.cs +++ b/Netina.AdminPanel.PWA/Models/BaseViewModel.cs @@ -18,16 +18,42 @@ public class BaseViewModel { public bool IsProcessing { get; set; } = false; public TPageDto PageDto { get; set; } - public BaseViewModel() + private string[] _permissions = new string[]{}; + private readonly IUserUtility _userUtility; + public bool IsPermitted { get; set; } = false; + public BaseViewModel(IUserUtility userUtility,params string[] permissions) { + _userUtility = userUtility; + _permissions = permissions; PageDto = Activator.CreateInstance(); } public virtual void Initialize() { } - public virtual Task InitializeAsync() + public virtual async Task InitializeAsync() { - return Task.CompletedTask; + await CheckPermissions(); + } + + public async Task CheckPermissions() + { + if (_permissions.Length == 0) + { + IsPermitted = true; + return true; + } + var permissions = await _userUtility.GetPermissionsAsync(); + if (permissions == null) + return false; + foreach (var permission in _permissions) + { + if (permissions.Contains(permission)) + { + IsPermitted = true; + return true; + } + } + return false; } } \ No newline at end of file diff --git a/Netina.AdminPanel.PWA/Netina.AdminPanel.PWA.csproj b/Netina.AdminPanel.PWA/Netina.AdminPanel.PWA.csproj index 625f6f5..75ef02c 100644 --- a/Netina.AdminPanel.PWA/Netina.AdminPanel.PWA.csproj +++ b/Netina.AdminPanel.PWA/Netina.AdminPanel.PWA.csproj @@ -5,8 +5,8 @@ enable enable service-worker-assets.js - 0.27.31.52 - 0.27.31.52 + 0.27.37.59 + 0.27.37.59 $(MSBuildProjectName) diff --git a/Netina.AdminPanel.PWA/Pages/BlogCategoriesPage.razor b/Netina.AdminPanel.PWA/Pages/BlogCategoriesPage.razor index c2aa91a..845bab1 100644 --- a/Netina.AdminPanel.PWA/Pages/BlogCategoriesPage.razor +++ b/Netina.AdminPanel.PWA/Pages/BlogCategoriesPage.razor @@ -12,7 +12,7 @@ دسته بندی بلاگـــــ ها - 124 عدد + @* 124 عدد *@ بلاگـــــ ها - 124 عدد + @ViewModel.TotalItems عدد > public string Search = string.Empty; public int CurrentPage = 0; public int PageCount = 1; - - public BlogsPageViewModel(NavigationManager navigationManager, ISnackbar snackbar, IUserUtility userUtility, IRestWrapper restWrapper, IDialogService dialogService) + public int TotalItems = 0; + public BlogsPageViewModel(NavigationManager navigationManager, ISnackbar snackbar, IUserUtility userUtility, IRestWrapper restWrapper, IDialogService dialogService) : base(userUtility) { _navigationManager = navigationManager; _snackbar = snackbar; @@ -33,6 +33,7 @@ public class BlogsPageViewModel : BaseViewModel> dto.Blogs.ForEach(d => PageDto.Add(d)); if (PageDto.Count == 20) PageCount = 2; + TotalItems = dto.Pager.TotalItems; } catch (ApiException ex) { diff --git a/Netina.AdminPanel.PWA/Pages/BrandsPage.razor b/Netina.AdminPanel.PWA/Pages/BrandsPage.razor index 95e8d96..23ac1d7 100644 --- a/Netina.AdminPanel.PWA/Pages/BrandsPage.razor +++ b/Netina.AdminPanel.PWA/Pages/BrandsPage.razor @@ -12,7 +12,7 @@ برنــــدها - 124 عدد + @* 124 عدد *@ > public int CurrentPage = 0; public int PageCount = 1; - public BrandsPageViewModel(NavigationManager navigationManager, ISnackbar snackbar, IUserUtility userUtility, IRestWrapper restWrapper, IDialogService dialogService) + public BrandsPageViewModel(NavigationManager navigationManager, ISnackbar snackbar, IUserUtility userUtility, IRestWrapper restWrapper, IDialogService dialogService) : base(userUtility) { _navigationManager = navigationManager; _snackbar = snackbar; diff --git a/Netina.AdminPanel.PWA/Pages/CategoriesPage.razor b/Netina.AdminPanel.PWA/Pages/CategoriesPage.razor index 67a20bc..cf62358 100644 --- a/Netina.AdminPanel.PWA/Pages/CategoriesPage.razor +++ b/Netina.AdminPanel.PWA/Pages/CategoriesPage.razor @@ -11,7 +11,7 @@ دسته بندی ها - 124 عدد + @* 124 عدد *@ diff --git a/Netina.AdminPanel.PWA/Pages/CategoriesPage.razor.cs b/Netina.AdminPanel.PWA/Pages/CategoriesPage.razor.cs index 38b2c88..3ebeeb6 100644 --- a/Netina.AdminPanel.PWA/Pages/CategoriesPage.razor.cs +++ b/Netina.AdminPanel.PWA/Pages/CategoriesPage.razor.cs @@ -12,7 +12,7 @@ public class CategoriesPageViewModel : BaseViewModel private readonly IDialogService _dialogService; private readonly IRestWrapper _restWrapper; - public FaqManagementPageViewModel(NavigationManager navigationManager, ISnackbar snackbar, IUserUtility userUtility, IRestWrapper restWrapper, IDialogService dialogService) + public FaqManagementPageViewModel(NavigationManager navigationManager, ISnackbar snackbar, IUserUtility userUtility, IRestWrapper restWrapper, IDialogService dialogService) : base(userUtility) { _navigationManager = navigationManager; _snackbar = snackbar; diff --git a/Netina.AdminPanel.PWA/Pages/Home.razor b/Netina.AdminPanel.PWA/Pages/Home.razor index 0dd75ff..b77f693 100644 --- a/Netina.AdminPanel.PWA/Pages/Home.razor +++ b/Netina.AdminPanel.PWA/Pages/Home.razor @@ -162,6 +162,7 @@ + @code{ diff --git a/Netina.AdminPanel.PWA/Pages/Home.razor.cs b/Netina.AdminPanel.PWA/Pages/Home.razor.cs index 5320191..5c7628a 100644 --- a/Netina.AdminPanel.PWA/Pages/Home.razor.cs +++ b/Netina.AdminPanel.PWA/Pages/Home.razor.cs @@ -9,7 +9,7 @@ public class HomeViewModel : BaseViewModel private readonly IDialogService _dialogService; private readonly NavigationManager _navigationManager; - public HomeViewModel(ISnackbar snackbar, IUserUtility userUtility, IRestWrapper restWrapper, IDialogService dialogService,NavigationManager navigationManager) + public HomeViewModel(ISnackbar snackbar, IUserUtility userUtility, IRestWrapper restWrapper, IDialogService dialogService,NavigationManager navigationManager) : base(userUtility) { _snackbar = snackbar; _userUtility = userUtility; diff --git a/Netina.AdminPanel.PWA/Pages/MarketerManagementPage.razor.cs b/Netina.AdminPanel.PWA/Pages/MarketerManagementPage.razor.cs index 193e7aa..2cc13fb 100644 --- a/Netina.AdminPanel.PWA/Pages/MarketerManagementPage.razor.cs +++ b/Netina.AdminPanel.PWA/Pages/MarketerManagementPage.razor.cs @@ -9,7 +9,7 @@ public class MarketerManagementPageViewModel : BaseViewModel private readonly IRestWrapper _restWrapper; - public MarketerManagementPageViewModel(NavigationManager navigationManager, ISnackbar snackbar, IUserUtility userUtility, IRestWrapper restWrapper, IDialogService dialogService) + public MarketerManagementPageViewModel(NavigationManager navigationManager, ISnackbar snackbar, IUserUtility userUtility, IRestWrapper restWrapper, IDialogService dialogService) : base(userUtility) { _navigationManager = navigationManager; _snackbar = snackbar; diff --git a/Netina.AdminPanel.PWA/Pages/OrdersPage.razor b/Netina.AdminPanel.PWA/Pages/OrdersPage.razor index b428ad5..d7087e4 100644 --- a/Netina.AdminPanel.PWA/Pages/OrdersPage.razor +++ b/Netina.AdminPanel.PWA/Pages/OrdersPage.razor @@ -1,7 +1,5 @@ @page "/orders" -@using Netina.Domain.Models.Claims @attribute [Microsoft.AspNetCore.Authorization.Authorize] -@attribute [PermissionAuthorize(ApplicationPermission.ManageDashboard)] @inject IDialogService DialogService @inject NavigationManager NavigationManager @@ -9,6 +7,7 @@ @inject IUserUtility UserUtility @inject IRestWrapper RestWrapper + @@ -73,6 +72,7 @@ + @@ -213,8 +213,10 @@ + + @code { public OrdersPageViewModel ViewModel { get; set; } diff --git a/Netina.AdminPanel.PWA/Pages/OrdersPage.razor.cs b/Netina.AdminPanel.PWA/Pages/OrdersPage.razor.cs index 813c127..1b0eb97 100644 --- a/Netina.AdminPanel.PWA/Pages/OrdersPage.razor.cs +++ b/Netina.AdminPanel.PWA/Pages/OrdersPage.razor.cs @@ -14,7 +14,11 @@ public class OrdersPageViewModel : BaseViewModel public ObservableCollection MainOrders { get; } = new ObservableCollection(); - public OrdersPageViewModel(NavigationManager navigationManager, ISnackbar snackbar, IUserUtility userUtility, IRestWrapper restWrapper, IDialogService dialogService) + public OrdersPageViewModel(NavigationManager navigationManager, + ISnackbar snackbar, + IUserUtility userUtility, + IRestWrapper restWrapper, + IDialogService dialogService) : base(userUtility,"Cached") { _navigationManager = navigationManager; _snackbar = snackbar; @@ -25,6 +29,9 @@ public class OrdersPageViewModel : BaseViewModel public override async Task InitializeAsync() { + await base.InitializeAsync(); + if (!IsPermitted) + return; try { var token = await _userUtility.GetBearerTokenAsync(); @@ -59,7 +66,6 @@ public class OrdersPageViewModel : BaseViewModel IsProcessing = false; } - await base.InitializeAsync(); } public async Task ChangePageAsync(int page) diff --git a/Netina.AdminPanel.PWA/Pages/PagesManagementPage.razor.cs b/Netina.AdminPanel.PWA/Pages/PagesManagementPage.razor.cs index 735b2f5..61af99d 100644 --- a/Netina.AdminPanel.PWA/Pages/PagesManagementPage.razor.cs +++ b/Netina.AdminPanel.PWA/Pages/PagesManagementPage.razor.cs @@ -15,7 +15,7 @@ public class PagesManagementPageViewModel : BaseViewModel ISnackbar snackbar, IUserUtility userUtility, IRestWrapper restWrapper, - IDialogService dialogService) + IDialogService dialogService) : base(userUtility) { _navigationManager = navigationManager; _snackbar = snackbar; diff --git a/Netina.AdminPanel.PWA/Pages/ProductsPage.razor b/Netina.AdminPanel.PWA/Pages/ProductsPage.razor index e6562b4..ec8b1f2 100644 --- a/Netina.AdminPanel.PWA/Pages/ProductsPage.razor +++ b/Netina.AdminPanel.PWA/Pages/ProductsPage.razor @@ -14,7 +14,7 @@ محصولاتــــ - 124 عدد + @ViewModel.TotalItems عدد diff --git a/Netina.AdminPanel.PWA/Pages/ProductsPage.razor.cs b/Netina.AdminPanel.PWA/Pages/ProductsPage.razor.cs index bc64f19..531e87e 100644 --- a/Netina.AdminPanel.PWA/Pages/ProductsPage.razor.cs +++ b/Netina.AdminPanel.PWA/Pages/ProductsPage.razor.cs @@ -11,8 +11,13 @@ public class ProductsPageViewModel : BaseViewModel PageDto.Add(d)); if (PageDto.Count == 20) PageCount = 2; + TotalItems = dto.Pager.TotalItems; } catch (ApiException ex) { diff --git a/Netina.AdminPanel.PWA/Pages/ShippingPage.razor.cs b/Netina.AdminPanel.PWA/Pages/ShippingPage.razor.cs index c6c57bd..aab0250 100644 --- a/Netina.AdminPanel.PWA/Pages/ShippingPage.razor.cs +++ b/Netina.AdminPanel.PWA/Pages/ShippingPage.razor.cs @@ -14,7 +14,7 @@ public class ShippingPageViewModel : BaseViewModel("#app"); builder.RootComponents.Add("head::after"); builder.Services.AddCascadingAuthenticationState(); builder.Services.AddOptions(); -builder.Services.AddAuthorizationCore(); +builder.Services.AddAuthorizationCore(option=>option.ConfigPolicies()); builder.Services.AddApiAuthorization(); builder.Services.AddScoped(); builder.Services.AddMudServices(config => diff --git a/Netina.AdminPanel.PWA/Utilities/PoliciesUtility.cs b/Netina.AdminPanel.PWA/Utilities/PoliciesUtility.cs new file mode 100644 index 0000000..513222f --- /dev/null +++ b/Netina.AdminPanel.PWA/Utilities/PoliciesUtility.cs @@ -0,0 +1,18 @@ +using Microsoft.AspNetCore.Authorization; +using Netina.Domain.Models.Claims; + +namespace Netina.AdminPanel.PWA.Utilities; + +public static class PoliciesUtility +{ + public static void ConfigPolicies(this AuthorizationOptions options) + { + ApplicationClaims.AllClaimDtos.ForEach(claim => + { + options.AddPolicy(claim.Value, builder => + { + builder.RequireClaim(CustomClaimType.Permission, claim.Value); + }); + }); + } +} \ No newline at end of file diff --git a/Netina.AdminPanel.PWA/_Imports.razor b/Netina.AdminPanel.PWA/_Imports.razor index 1419fed..da3cc6f 100644 --- a/Netina.AdminPanel.PWA/_Imports.razor +++ b/Netina.AdminPanel.PWA/_Imports.razor @@ -17,4 +17,5 @@ @using Netina.AdminPanel.PWA.Utilities @using Netina.Common.Extensions @using Netina.Domain.Entities.Users -@using Netina.AdminPanel.PWA.Components.Originals \ No newline at end of file +@using Netina.AdminPanel.PWA.Components.Originals +@using Netina.Domain.Models.Claims \ No newline at end of file diff --git a/Netina.AdminPanel.PWA/wwwroot/appsettings.Development.json b/Netina.AdminPanel.PWA/wwwroot/appsettings.Development.json index 23419ff..c3fa40e 100644 --- a/Netina.AdminPanel.PWA/wwwroot/appsettings.Development.json +++ b/Netina.AdminPanel.PWA/wwwroot/appsettings.Development.json @@ -10,9 +10,10 @@ }, "WebSiteUrl": "https://vesmeh.com", "AdminPanelBaseUrl": "https://admin.vesmeh.com", - "StorageBaseUrl": "https://storage.vesmeh.com", - "ApiUrl": "http://192.168.1.12:32770/api", - "IsShop": true + "StorageBaseUrl": "https://storage.vesmeh.com/", + "ApiUrl": "https://api.vesmeh.com/api" + //"ApiUrl": "http://192.168.1.12:32770/api" + //"WebSiteUrl": "https://hamyanedalat.com", //"AdminPanelBaseUrl": "https://admin.hamyanedalat.com", //"StorageBaseUrl": "https://storage.hamyanedalat.com", diff --git a/Netina.AdminPanel.PWA/wwwroot/css/app.min.css b/Netina.AdminPanel.PWA/wwwroot/css/app.min.css index 63da851..4480cbb 100644 --- a/Netina.AdminPanel.PWA/wwwroot/css/app.min.css +++ b/Netina.AdminPanel.PWA/wwwroot/css/app.min.css @@ -1201,9 +1201,6 @@ input:checked + .toggle-bg { .mt-4 { margin-top: 1rem; } -.mt-5 { - margin-top: 1.25rem; -} .mt-6 { margin-top: 1.5rem; } @@ -1298,9 +1295,6 @@ input:checked + .toggle-bg { .\!max-h-\[80vh\] { max-height: 80vh !important; } -.max-h-\[20rem\] { - max-height: 20rem; -} .max-h-\[30rem\] { max-height: 30rem; } @@ -1588,6 +1582,10 @@ input:checked + .toggle-bg { .bg-\[--mud-palette-background\] { background-color: var(--mud-palette-background); } +.bg-amber-500 { + --tw-bg-opacity: 1; + background-color: rgb(245 158 11 / var(--tw-bg-opacity)); +} .bg-blue-500 { --tw-bg-opacity: 1; background-color: rgb(63 131 248 / var(--tw-bg-opacity)); @@ -2301,10 +2299,6 @@ code { height: 38rem; } - .lg\:max-h-\[25rem\] { - max-height: 25rem; - } - .lg\:max-h-\[35rem\] { max-height: 35rem; } diff --git a/Netina.AdminPanel.PWA/wwwroot/css/app.output.css b/Netina.AdminPanel.PWA/wwwroot/css/app.output.css index e22251b..0b86ecf 100644 --- a/Netina.AdminPanel.PWA/wwwroot/css/app.output.css +++ b/Netina.AdminPanel.PWA/wwwroot/css/app.output.css @@ -1315,10 +1315,6 @@ input:checked + .toggle-bg { margin-top: 1rem; } -.mt-5 { - margin-top: 1.25rem; -} - .mt-6 { margin-top: 1.5rem; } @@ -1443,10 +1439,6 @@ input:checked + .toggle-bg { max-height: 80vh !important; } -.max-h-\[20rem\] { - max-height: 20rem; -} - .max-h-\[30rem\] { max-height: 30rem; } @@ -1463,10 +1455,6 @@ input:checked + .toggle-bg { min-height: 33rem; } -.min-h-screen { - min-height: 100vh; -} - .w-1\/2 { width: 50%; } @@ -1824,6 +1812,11 @@ input:checked + .toggle-bg { background-color: var(--mud-palette-background); } +.bg-amber-500 { + --tw-bg-opacity: 1; + background-color: rgb(245 158 11 / var(--tw-bg-opacity)); +} + .bg-blue-500 { --tw-bg-opacity: 1; background-color: rgb(63 131 248 / var(--tw-bg-opacity)); @@ -2645,10 +2638,6 @@ code { height: 38rem; } - .lg\:max-h-\[25rem\] { - max-height: 25rem; - } - .lg\:max-h-\[35rem\] { max-height: 35rem; } diff --git a/Netina.AdminPanel.PWA/wwwroot/css/content-styles.css b/Netina.AdminPanel.PWA/wwwroot/css/content-styles.css index 25da5d9..10b5061 100644 --- a/Netina.AdminPanel.PWA/wwwroot/css/content-styles.css +++ b/Netina.AdminPanel.PWA/wwwroot/css/content-styles.css @@ -1,10 +1,4 @@ -/* - * CKEditor 5 (v41.3.1) content styles. - * Generated on Wed, 24 Apr 2024 10:28:24 GMT. - * For more information, check out https://ckeditor.com/docs/ckeditor5/latest/installation/advanced/content-styles.html - */ - -:root { +:root { --ck-color-image-caption-background: hsl(0, 0%, 97%); --ck-color-image-caption-text: hsl(0, 0%, 20%); --ck-color-mention-background: hsla(341, 100%, 30%, 0.1);