Browse Source

Merge pull request #8707 from abpframework/auto-merge/rel-4-3/325

Merge branch dev with rel-4.3
pull/8738/head
Halil İbrahim Kalkan 6 years ago
committed by GitHub
parent
commit
206e571a2b
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 11
      framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Security/AbpComponentsClaimsCache.cs
  2. 10
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/LoginDisplay.razor.cs
  3. 21
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/AspNetCore/Components/WebAssembly/Hosting/AbpWebAssemblyHostBuilderExtensions.cs
  4. 5
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCurrentPrincipalAccessor.cs

11
framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Security/AbpComponentsClaimsCache.cs

@ -1,6 +1,7 @@
using System.Security.Claims; using System.Security.Claims;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Components.Authorization; using Microsoft.AspNetCore.Components.Authorization;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.Components.Web.Security namespace Volo.Abp.AspNetCore.Components.Web.Security
@ -9,15 +10,19 @@ namespace Volo.Abp.AspNetCore.Components.Web.Security
typeof(AbpComponentsClaimsCache), typeof(AbpComponentsClaimsCache),
typeof(IAsyncInitialize) typeof(IAsyncInitialize)
)] )]
public class AbpComponentsClaimsCache : ISingletonDependency, IAsyncInitialize public class AbpComponentsClaimsCache : IScopedDependency, IAsyncInitialize
{ {
public ClaimsPrincipal Principal { get; private set; } public ClaimsPrincipal Principal { get; private set; }
private readonly AuthenticationStateProvider _authenticationStateProvider; private readonly AuthenticationStateProvider _authenticationStateProvider;
public AbpComponentsClaimsCache(AuthenticationStateProvider authenticationStateProvider) public AbpComponentsClaimsCache(IClientScopeServiceProviderAccessor clientScopeServiceProviderAccessor)
{ {
_authenticationStateProvider = authenticationStateProvider; _authenticationStateProvider = clientScopeServiceProviderAccessor.ServiceProvider.GetRequiredService<AuthenticationStateProvider>();
_authenticationStateProvider.AuthenticationStateChanged += async (task) =>
{
Principal = (await task).User;
};
} }
public virtual async Task InitializeAsync() public virtual async Task InitializeAsync()

10
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/LoginDisplay.razor.cs

@ -1,6 +1,7 @@
using System; using System;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Authorization;
using Microsoft.AspNetCore.Components.Routing; using Microsoft.AspNetCore.Components.Routing;
using Volo.Abp.UI.Navigation; using Volo.Abp.UI.Navigation;
@ -10,6 +11,9 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic
{ {
[Inject] [Inject]
protected IMenuManager MenuManager { get; set; } protected IMenuManager MenuManager { get; set; }
[Inject]
protected AuthenticationStateProvider AuthenticationStateProvider { get; set; }
protected ApplicationMenu Menu { get; set; } protected ApplicationMenu Menu { get; set; }
@ -18,6 +22,12 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic
Menu = await MenuManager.GetAsync(StandardMenus.User); Menu = await MenuManager.GetAsync(StandardMenus.User);
Navigation.LocationChanged += OnLocationChanged; Navigation.LocationChanged += OnLocationChanged;
AuthenticationStateProvider.AuthenticationStateChanged += async (task) =>
{
Menu = await MenuManager.GetAsync(StandardMenus.User);
await InvokeAsync(StateHasChanged);
};
} }
protected virtual void OnLocationChanged(object sender, LocationChangedEventArgs e) protected virtual void OnLocationChanged(object sender, LocationChangedEventArgs e)

21
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/AspNetCore/Components/WebAssembly/Hosting/AbpWebAssemblyHostBuilderExtensions.cs

@ -48,17 +48,12 @@ namespace Microsoft.AspNetCore.Components.WebAssembly.Hosting
Check.NotNull(application, nameof(application)); Check.NotNull(application, nameof(application));
Check.NotNull(serviceProvider, nameof(serviceProvider)); Check.NotNull(serviceProvider, nameof(serviceProvider));
var serviceProviderAccessor = (ComponentsClientScopeServiceProviderAccessor) ((ComponentsClientScopeServiceProviderAccessor) serviceProvider
serviceProvider.GetRequiredService<IClientScopeServiceProviderAccessor>(); .GetRequiredService<IClientScopeServiceProviderAccessor>()).ServiceProvider = serviceProvider;
serviceProviderAccessor.ServiceProvider = serviceProvider;
application.Initialize(serviceProvider); application.Initialize(serviceProvider);
await InitializeModulesAsync(serviceProvider);
using (var scope = serviceProvider.CreateScope()) await SetCurrentLanguageAsync(serviceProvider);
{
await InitializeModulesAsync(scope.ServiceProvider);
await SetCurrentLanguageAsync(scope);
}
} }
private static async Task InitializeModulesAsync(IServiceProvider serviceProvider) private static async Task InitializeModulesAsync(IServiceProvider serviceProvider)
@ -69,11 +64,11 @@ namespace Microsoft.AspNetCore.Components.WebAssembly.Hosting
} }
} }
private static async Task SetCurrentLanguageAsync(IServiceScope scope) private static async Task SetCurrentLanguageAsync(IServiceProvider serviceProvider)
{ {
var configurationClient = scope.ServiceProvider.GetRequiredService<ICachedApplicationConfigurationClient>(); var configurationClient = serviceProvider.GetRequiredService<ICachedApplicationConfigurationClient>();
var utilsService = scope.ServiceProvider.GetRequiredService<IAbpUtilsService>(); var utilsService = serviceProvider.GetRequiredService<IAbpUtilsService>();
var configuration = configurationClient.Get(); var configuration = await configurationClient.GetAsync();
var cultureName = configuration.Localization?.CurrentCulture?.CultureName; var cultureName = configuration.Localization?.CurrentCulture?.CultureName;
if (!cultureName.IsNullOrEmpty()) if (!cultureName.IsNullOrEmpty())
{ {

5
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCurrentPrincipalAccessor.cs

@ -1,4 +1,5 @@
using System.Security.Claims; using System.Security.Claims;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.AspNetCore.Components.Web.Security; using Volo.Abp.AspNetCore.Components.Web.Security;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.Security.Claims; using Volo.Abp.Security.Claims;
@ -10,9 +11,9 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly
protected AbpComponentsClaimsCache ClaimsCache { get; } protected AbpComponentsClaimsCache ClaimsCache { get; }
public WebAssemblyCurrentPrincipalAccessor( public WebAssemblyCurrentPrincipalAccessor(
AbpComponentsClaimsCache claimsCache) IClientScopeServiceProviderAccessor clientScopeServiceProviderAccessor)
{ {
ClaimsCache = claimsCache; ClaimsCache = clientScopeServiceProviderAccessor.ServiceProvider.GetRequiredService<AbpComponentsClaimsCache>();
} }
protected override ClaimsPrincipal GetClaimsPrincipal() protected override ClaimsPrincipal GetClaimsPrincipal()

Loading…
Cancel
Save