You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
2.1 KiB
59 lines
2.1 KiB
using Microsoft.Extensions.Logging;
|
|
using Microsoft.Extensions.Logging.Abstractions;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using Volo.Abp.Authorization.Permissions;
|
|
using Volo.Abp.Data;
|
|
using Volo.Abp.DependencyInjection;
|
|
using Volo.Abp.MultiTenancy;
|
|
using Volo.Abp.PermissionManagement;
|
|
|
|
namespace LINGYUN.Abp.MicroService.AdminService;
|
|
public class AdminServiceDataSeeder : ITransientDependency
|
|
{
|
|
protected ILogger<AdminServiceDataSeeder> Logger { get; }
|
|
protected ICurrentTenant CurrentTenant { get; }
|
|
protected IPermissionDefinitionManager PermissionDefinitionManager { get; }
|
|
protected IPermissionDataSeeder PermissionDataSeeder { get; }
|
|
|
|
public AdminServiceDataSeeder(
|
|
IPermissionDefinitionManager permissionDefinitionManager,
|
|
IPermissionDataSeeder permissionDataSeeder,
|
|
ICurrentTenant currentTenant)
|
|
{
|
|
PermissionDefinitionManager = permissionDefinitionManager;
|
|
PermissionDataSeeder = permissionDataSeeder;
|
|
CurrentTenant = currentTenant;
|
|
|
|
Logger = NullLogger<AdminServiceDataSeeder>.Instance;
|
|
}
|
|
|
|
public virtual async Task SeedAsync(DataSeedContext context)
|
|
{
|
|
using (CurrentTenant.Change(context.TenantId))
|
|
{
|
|
await SeedAdminRolePermissionsAsync(context);
|
|
}
|
|
}
|
|
|
|
private async Task SeedAdminRolePermissionsAsync(DataSeedContext context)
|
|
{
|
|
Logger.LogInformation("Seeding the default role permissions...");
|
|
|
|
var multiTenancySide = CurrentTenant.GetMultiTenancySide();
|
|
var permissionNames = (await PermissionDefinitionManager.GetPermissionsAsync())
|
|
.Where(p => p.MultiTenancySide.HasFlag(multiTenancySide))
|
|
.Where(p => !p.Providers.Any() || p.Providers.Contains(RolePermissionValueProvider.ProviderName))
|
|
.Select(p => p.Name)
|
|
.ToArray();
|
|
|
|
await PermissionDataSeeder.SeedAsync(
|
|
RolePermissionValueProvider.ProviderName,
|
|
"admin",
|
|
permissionNames,
|
|
context?.TenantId
|
|
);
|
|
|
|
Logger.LogInformation("Seed default role permissions completed.");
|
|
}
|
|
}
|
|
|