79 lines
2.7 KiB
C#
79 lines
2.7 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Threading.Tasks;
|
|
using System.Collections.Generic;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Volo.Abp.Data;
|
|
using Volo.Abp.DependencyInjection;
|
|
using Volo.Abp.Domain.Repositories;
|
|
using Volo.Abp.MultiTenancy;
|
|
using Volo.Abp.PermissionManagement;
|
|
using Sozsoft.Platform.Extensions;
|
|
|
|
namespace Sozsoft.Platform.Data.Seeds;
|
|
|
|
public class PermissionSeederDto
|
|
{
|
|
public List<PermissionGroupDefinitionRecordSeedDto> PermissionGroupDefinitionRecords { get; set; }
|
|
public List<PermissionDefinitionRecordSeedDto> PermissionDefinitionRecords { get; set; }
|
|
}
|
|
|
|
public class PermissionDataSeeder : IDataSeedContributor, ITransientDependency
|
|
{
|
|
private readonly IRepository<PermissionGroupDefinitionRecord, Guid> _permissionGroupRepository;
|
|
private readonly IRepository<PermissionDefinitionRecord, Guid> _permissionRepository;
|
|
|
|
public PermissionDataSeeder(
|
|
IRepository<PermissionGroupDefinitionRecord, Guid> permissionGroupRepository,
|
|
IRepository<PermissionDefinitionRecord, Guid> permissionRepository)
|
|
{
|
|
_permissionGroupRepository = permissionGroupRepository;
|
|
_permissionRepository = permissionRepository;
|
|
}
|
|
|
|
public async Task SeedAsync(DataSeedContext context)
|
|
{
|
|
var configuration = new ConfigurationBuilder()
|
|
.SetBasePath(Directory.GetCurrentDirectory())
|
|
.AddJsonFile(Path.Combine("Seeds", "PermissionsData.json"))
|
|
.Build();
|
|
|
|
var items = configuration.Get<PermissionSeederDto>();
|
|
|
|
foreach (var item in items.PermissionGroupDefinitionRecords)
|
|
{
|
|
var exists = await _permissionGroupRepository.AnyAsync(x => x.Name == item.Name);
|
|
|
|
if (!exists)
|
|
{
|
|
await _permissionGroupRepository.InsertAsync(new PermissionGroupDefinitionRecord
|
|
{
|
|
Name = item.Name,
|
|
DisplayName = item.DisplayName
|
|
});
|
|
}
|
|
}
|
|
|
|
foreach (var item in items.PermissionDefinitionRecords)
|
|
{
|
|
var exists = await _permissionRepository.AnyAsync(x => x.Name == item.Name);
|
|
|
|
if (!exists)
|
|
{
|
|
var perm = new PermissionDefinitionRecord
|
|
{
|
|
GroupName = item.GroupName,
|
|
Name = item.Name,
|
|
ParentName = string.IsNullOrWhiteSpace(item.ParentName) ? null : item.ParentName,
|
|
DisplayName = item.DisplayName,
|
|
IsEnabled = item.IsEnabled,
|
|
MultiTenancySide = (MultiTenancySides)item.MultiTenancySide,
|
|
};
|
|
|
|
perm.SetMenuGroup(item.MenuGroup);
|
|
|
|
await _permissionRepository.InsertAsync(perm);
|
|
}
|
|
}
|
|
}
|
|
}
|