Browse Source

Cache ShouldAddComponentAsync result in toolbar contributor

Resolve #24608
pull/24609/head
maliming 9 months ago
parent
commit
283d9dde74
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 20
      framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/SimplePageToolbarContributor.cs

20
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;
}
}

Loading…
Cancel
Save