Add `UserDeletedEventHandler` to `SettingManagement.Application`.

pull/18051/head
maliming 2 years ago
parent bcf65ab18d
commit 95e7b1bbc6
No known key found for this signature in database
GPG Key ID: A646B9CB645ECEA4

@ -20,6 +20,6 @@ public class UserDeletedEventHandler :
public async Task HandleEventAsync(EntityDeletedEto<UserEto> eventData)
{
await PermissionManager.DeleteAsync(UserPermissionValueProvider.ProviderName, eventData.Entity.Name);
await PermissionManager.DeleteAsync(UserPermissionValueProvider.ProviderName, eventData.Entity.Id.ToString());
}
}

@ -13,6 +13,7 @@
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.Ddd.Application\Volo.Abp.Ddd.Application.csproj" />
<ProjectReference Include="..\Volo.Abp.SettingManagement.Application.Contracts\Volo.Abp.SettingManagement.Application.Contracts.csproj" />
<ProjectReference Include="..\Volo.Abp.SettingManagement.Domain\Volo.Abp.SettingManagement.Domain.csproj" />
<ProjectReference Include="..\..\..\users\src\Volo.Abp.Users.Abstractions\Volo.Abp.Users.Abstractions.csproj" />
</ItemGroup>
</Project>

@ -2,6 +2,7 @@
using Volo.Abp.Emailing;
using Volo.Abp.Modularity;
using Volo.Abp.Timing;
using Volo.Abp.Users;
namespace Volo.Abp.SettingManagement;
@ -10,7 +11,8 @@ namespace Volo.Abp.SettingManagement;
typeof(AbpSettingManagementDomainModule),
typeof(AbpSettingManagementApplicationContractsModule),
typeof(AbpEmailingModule),
typeof(AbpTimingModule)
typeof(AbpTimingModule),
typeof(AbpUsersAbstractionModule)
)]
public class AbpSettingManagementApplicationModule : AbpModule
{

@ -0,0 +1,25 @@
using System.Threading.Tasks;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Domain.Entities.Events.Distributed;
using Volo.Abp.EventBus.Distributed;
using Volo.Abp.Users;
namespace Volo.Abp.SettingManagement;
public class UserDeletedEventHandler :
IDistributedEventHandler<EntityDeletedEto<UserEto>>,
ITransientDependency
{
protected ISettingManager SettingManager { get; }
public UserDeletedEventHandler(ISettingManager settingManager)
{
SettingManager = settingManager;
}
public async Task HandleEventAsync(EntityDeletedEto<UserEto> eventData)
{
await SettingManager.DeleteAsync(UserPermissionValueProvider.ProviderName, eventData.Entity.Id.ToString());
}
}

@ -12,4 +12,6 @@ public interface ISettingManager
Task<List<SettingValue>> GetAllAsync([NotNull] string providerName, [CanBeNull] string providerKey, bool fallback = true);
Task SetAsync([NotNull] string name, [CanBeNull] string value, [NotNull] string providerName, [CanBeNull] string providerKey, bool forceToSet = false);
Task DeleteAsync(string providerName, string providerKey);
}

@ -13,6 +13,7 @@ public class SettingManager : ISettingManager, ISingletonDependency
{
protected ISettingDefinitionManager SettingDefinitionManager { get; }
protected ISettingEncryptionService SettingEncryptionService { get; }
protected ISettingManagementStore SettingManagementStore { get; }
protected List<ISettingManagementProvider> Providers => _lazyProviders.Value;
protected SettingManagementOptions Options { get; }
private readonly Lazy<List<ISettingManagementProvider>> _lazyProviders;
@ -21,10 +22,12 @@ public class SettingManager : ISettingManager, ISingletonDependency
IOptions<SettingManagementOptions> options,
IServiceProvider serviceProvider,
ISettingDefinitionManager settingDefinitionManager,
ISettingEncryptionService settingEncryptionService)
ISettingEncryptionService settingEncryptionService,
ISettingManagementStore settingManagementStore)
{
SettingDefinitionManager = settingDefinitionManager;
SettingEncryptionService = settingEncryptionService;
SettingManagementStore = settingManagementStore;
Options = options.Value;
//TODO: Instead, use IServiceScopeFactory and create a scope..?
@ -160,6 +163,15 @@ public class SettingManager : ISettingManager, ISingletonDependency
}
}
public virtual async Task DeleteAsync(string providerName, string providerKey)
{
var settings = await SettingManagementStore.GetListAsync(providerName, providerKey);
foreach (var setting in settings)
{
await SettingManagementStore.DeleteAsync(setting.Name, providerName, providerKey);
}
}
protected virtual async Task<string> GetOrNullInternalAsync(string name, string providerName, string providerKey, bool fallback = true)
{
var setting = await SettingDefinitionManager.GetAsync(name);

@ -186,4 +186,16 @@ public class SettingManager_User_Tests : SettingsTestBase
(await _settingManager.GetOrNullForUserAsync("MySettingWithoutInherit", _testData.User2Id)).ShouldBeNull(); //Does not inherit!
(await _settingManager.GetOrNullGlobalAsync("MySettingWithoutInherit")).ShouldBe("default-store-value");
}
[Fact]
public async Task DeleteAsync()
{
(await _settingManager.GetOrNullForUserAsync("MySetting2", _testData.User1Id)).ShouldBe("user1-store-value");
(await _settingManager.GetOrNullForUserAsync("MySettingWithoutInherit", _testData.User1Id)).ShouldBe("user1-store-value");
await _settingManager.DeleteAsync(UserSettingValueProvider.ProviderName, _testData.User1Id.ToString());
(await _settingManager.GetOrNullForUserAsync("MySetting2", _testData.User1Id)).ShouldNotBe("user1-store-value");
(await _settingManager.GetOrNullForUserAsync("MySettingWithoutInherit", _testData.User1Id)).ShouldNotBe("user1-store-value");
}
}

Loading…
Cancel
Save