Browse Source
Cache ShouldAddComponentAsync result in toolbar contributor
Resolve #24608
pull/24609/head
maliming
9 months ago
No known key found for this signature in database
GPG Key ID: A646B9CB645ECEA4
1 changed files with
13 additions and
7 deletions
-
framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/SimplePageToolbarContributor.cs
|
|
|
@ -16,6 +16,8 @@ public class SimplePageToolbarContributor : IPageToolbarContributor |
|
|
|
|
|
|
|
public string? RequiredPolicyName { get; } |
|
|
|
|
|
|
|
private bool? _shouldAddComponent; |
|
|
|
|
|
|
|
public SimplePageToolbarContributor( |
|
|
|
Type componentType, |
|
|
|
Dictionary<string, object?>? arguments = null, |
|
|
|
@ -38,15 +40,19 @@ public class SimplePageToolbarContributor : IPageToolbarContributor |
|
|
|
|
|
|
|
protected virtual async Task<bool> ShouldAddComponentAsync(PageToolbarContributionContext context) |
|
|
|
{ |
|
|
|
if (RequiredPolicyName != null) |
|
|
|
if (_shouldAddComponent.HasValue) |
|
|
|
{ |
|
|
|
return _shouldAddComponent.Value; |
|
|
|
} |
|
|
|
|
|
|
|
if (RequiredPolicyName == null) |
|
|
|
{ |
|
|
|
var authorizationService = context.ServiceProvider.GetRequiredService<IAuthorizationService>(); |
|
|
|
if (!await authorizationService.IsGrantedAsync(RequiredPolicyName)) |
|
|
|
{ |
|
|
|
return false; |
|
|
|
} |
|
|
|
_shouldAddComponent = true; |
|
|
|
return _shouldAddComponent.Value; |
|
|
|
} |
|
|
|
|
|
|
|
return true; |
|
|
|
var authorizationService = context.ServiceProvider.GetRequiredService<IAuthorizationService>(); |
|
|
|
_shouldAddComponent = await authorizationService.IsGrantedAsync(RequiredPolicyName); |
|
|
|
return _shouldAddComponent.Value; |
|
|
|
} |
|
|
|
} |
|
|
|
|