diff --git a/services/administration/src/EShopOnAbp.AdministrationService.HttpApi.Host/Handlers/CustomerRoleCreationHandler.cs b/services/administration/src/EShopOnAbp.AdministrationService.HttpApi.Host/Handlers/CustomerRoleCreationHandler.cs new file mode 100644 index 00000000..07480c62 --- /dev/null +++ b/services/administration/src/EShopOnAbp.AdministrationService.HttpApi.Host/Handlers/CustomerRoleCreationHandler.cs @@ -0,0 +1,29 @@ +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Entities.Events.Distributed; +using Volo.Abp.EventBus.Distributed; +using Volo.Abp.Identity; +using Volo.Abp.PermissionManagement; +using Volo.Abp.Uow; + +namespace EShopOnAbp.AdministrationService.Handlers; + +public class CustomerRoleCreationHandler : IDistributedEventHandler>, + ITransientDependency +{ + private readonly IPermissionManager _permissionManager; + protected const string CustomerRole = "customer"; + protected const string OrderPermission = "OrderingService.Orders"; + + public CustomerRoleCreationHandler(IPermissionManager permissionManager) + { + _permissionManager = permissionManager; + } + + [UnitOfWork] + public virtual async Task HandleEventAsync(EntityCreatedEto eventData) + { + // Assign initial permissions for the customer role + await _permissionManager.SetForRoleAsync(CustomerRole, OrderPermission, true); + } +} \ No newline at end of file