Browse Source
Merge pull request #13985 from abpframework/migrator-dynamic-permissions-features
Disable dynamic permissions and features during migration.
pull/14019/head
Halil İbrahim Kalkan
4 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with
114 additions and
15 deletions
-
framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/AbpBackgroundJobsModule.cs
-
framework/src/Volo.Abp.Data/Volo/Abp/Data/AbpDataMigrationEnvironment.cs
-
framework/src/Volo.Abp.Data/Volo/Abp/Data/AbpDataMigrationEnvironmentExtensions.cs
-
modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs
-
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainModule.cs
-
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/Program.cs
-
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Program.cs
-
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Program.cs
-
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Program.cs
-
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/Program.cs
-
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Program.cs
-
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/DbMigratorHostedService.cs
-
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyProjectNameDbMigratorModule.cs
|
|
|
@ -2,6 +2,7 @@ |
|
|
|
using Microsoft.Extensions.DependencyInjection; |
|
|
|
using Microsoft.Extensions.Options; |
|
|
|
using Volo.Abp.BackgroundWorkers; |
|
|
|
using Volo.Abp.Data; |
|
|
|
using Volo.Abp.DistributedLocking; |
|
|
|
using Volo.Abp.Guids; |
|
|
|
using Volo.Abp.Modularity; |
|
|
|
@ -19,10 +20,20 @@ namespace Volo.Abp.BackgroundJobs; |
|
|
|
)] |
|
|
|
public class AbpBackgroundJobsModule : AbpModule |
|
|
|
{ |
|
|
|
public async override Task OnApplicationInitializationAsync(ApplicationInitializationContext context) |
|
|
|
public override void ConfigureServices(ServiceConfigurationContext context) |
|
|
|
{ |
|
|
|
var options = context.ServiceProvider.GetRequiredService<IOptions<AbpBackgroundJobOptions>>().Value; |
|
|
|
if (options.IsJobExecutionEnabled) |
|
|
|
if (context.Services.IsDataMigrationEnvironment()) |
|
|
|
{ |
|
|
|
Configure<AbpBackgroundJobOptions>(options => |
|
|
|
{ |
|
|
|
options.IsJobExecutionEnabled = false; |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public override async Task OnApplicationInitializationAsync(ApplicationInitializationContext context) |
|
|
|
{ |
|
|
|
if (context.ServiceProvider.GetRequiredService<IOptions<AbpBackgroundJobOptions>>().Value.IsJobExecutionEnabled) |
|
|
|
{ |
|
|
|
await context.AddBackgroundWorkerAsync<IBackgroundJobWorker>(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -0,0 +1,6 @@ |
|
|
|
namespace Volo.Abp.Data; |
|
|
|
|
|
|
|
public class AbpDataMigrationEnvironment |
|
|
|
{ |
|
|
|
|
|
|
|
} |
|
|
|
@ -0,0 +1,38 @@ |
|
|
|
using System; |
|
|
|
using Microsoft.Extensions.DependencyInjection; |
|
|
|
using Volo.Abp.DependencyInjection; |
|
|
|
|
|
|
|
namespace Volo.Abp.Data; |
|
|
|
|
|
|
|
public static class AbpDataMigrationEnvironmentExtensions |
|
|
|
{ |
|
|
|
public static void AddDataMigrationEnvironment(this AbpApplicationCreationOptions options, AbpDataMigrationEnvironment environment = null) |
|
|
|
{ |
|
|
|
options.Services.AddDataMigrationEnvironment(environment ?? new AbpDataMigrationEnvironment()); |
|
|
|
} |
|
|
|
|
|
|
|
public static void AddDataMigrationEnvironment(this IServiceCollection services, AbpDataMigrationEnvironment environment = null) |
|
|
|
{ |
|
|
|
services.AddObjectAccessor<AbpDataMigrationEnvironment>(environment ?? new AbpDataMigrationEnvironment()); |
|
|
|
} |
|
|
|
|
|
|
|
public static AbpDataMigrationEnvironment GetDataMigrationEnvironment(this IServiceCollection services) |
|
|
|
{ |
|
|
|
return services.GetObjectOrNull<IObjectAccessor<AbpDataMigrationEnvironment>>()?.Value; |
|
|
|
} |
|
|
|
|
|
|
|
public static bool IsDataMigrationEnvironment(this IServiceCollection services) |
|
|
|
{ |
|
|
|
return services.GetDataMigrationEnvironment() != null; |
|
|
|
} |
|
|
|
|
|
|
|
public static AbpDataMigrationEnvironment GetDataMigrationEnvironment(this IServiceProvider serviceProvider) |
|
|
|
{ |
|
|
|
return serviceProvider.GetService<IObjectAccessor<AbpDataMigrationEnvironment>>()?.Value; |
|
|
|
} |
|
|
|
|
|
|
|
public static bool IsDataMigrationEnvironment(this IServiceProvider serviceProvider) |
|
|
|
{ |
|
|
|
return serviceProvider.GetDataMigrationEnvironment() != null; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -7,6 +7,7 @@ using Microsoft.Extensions.Logging; |
|
|
|
using Microsoft.Extensions.Options; |
|
|
|
using Polly; |
|
|
|
using Volo.Abp.Caching; |
|
|
|
using Volo.Abp.Data; |
|
|
|
using Volo.Abp.DependencyInjection; |
|
|
|
using Volo.Abp.FeatureManagement.Localization; |
|
|
|
using Volo.Abp.Features; |
|
|
|
@ -39,6 +40,15 @@ public class AbpFeatureManagementDomainModule : AbpModule |
|
|
|
{ |
|
|
|
options.MapCodeNamespace("AbpFeatureManagement", typeof(AbpFeatureManagementResource)); |
|
|
|
}); |
|
|
|
|
|
|
|
if (context.Services.IsDataMigrationEnvironment()) |
|
|
|
{ |
|
|
|
Configure<FeatureManagementOptions>(options => |
|
|
|
{ |
|
|
|
options.SaveStaticFeaturesToDatabase = false; |
|
|
|
options.IsDynamicFeatureStoreEnabled = false; |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private readonly CancellationTokenSource _cancellationTokenSource = new(); |
|
|
|
|
|
|
|
@ -9,6 +9,7 @@ using Polly; |
|
|
|
using Volo.Abp.Authorization; |
|
|
|
using Volo.Abp.Authorization.Permissions; |
|
|
|
using Volo.Abp.Caching; |
|
|
|
using Volo.Abp.Data; |
|
|
|
using Volo.Abp.DependencyInjection; |
|
|
|
using Volo.Abp.Domain; |
|
|
|
using Volo.Abp.Json; |
|
|
|
@ -26,6 +27,18 @@ public class AbpPermissionManagementDomainModule : AbpModule |
|
|
|
{ |
|
|
|
private readonly CancellationTokenSource _cancellationTokenSource = new(); |
|
|
|
|
|
|
|
public override void ConfigureServices(ServiceConfigurationContext context) |
|
|
|
{ |
|
|
|
if (context.Services.IsDataMigrationEnvironment()) |
|
|
|
{ |
|
|
|
Configure<PermissionManagementOptions>(options => |
|
|
|
{ |
|
|
|
options.SaveStaticPermissionsToDatabase = false; |
|
|
|
options.IsDynamicPermissionStoreEnabled = false; |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public override void OnApplicationInitialization(ApplicationInitializationContext context) |
|
|
|
{ |
|
|
|
AsyncHelper.RunSync(() => OnApplicationInitializationAsync(context)); |
|
|
|
|
|
|
|
@ -1,7 +1,7 @@ |
|
|
|
using MyCompanyName.MyProjectName.Blazor.Server; |
|
|
|
using MyCompanyName.MyProjectName.Data; |
|
|
|
using Serilog; |
|
|
|
using Serilog.Events; |
|
|
|
using Volo.Abp.Data; |
|
|
|
|
|
|
|
namespace MyCompanyName.MyProjectName; |
|
|
|
|
|
|
|
@ -36,6 +36,10 @@ public class Program |
|
|
|
.UseAutofac() |
|
|
|
.UseSerilog(); |
|
|
|
await builder.AddApplicationAsync<MyProjectNameModule>(); |
|
|
|
if (IsMigrateDatabase(args)) |
|
|
|
{ |
|
|
|
builder.Services.AddDataMigrationEnvironment(); |
|
|
|
} |
|
|
|
var app = builder.Build(); |
|
|
|
await app.InitializeApplicationAsync(); |
|
|
|
|
|
|
|
|
|
|
|
@ -1,8 +1,7 @@ |
|
|
|
using System; |
|
|
|
using MyCompanyName.MyProjectName.Blazor.Server; |
|
|
|
using MyCompanyName.MyProjectName.Data; |
|
|
|
using Serilog; |
|
|
|
using Serilog.Events; |
|
|
|
using Volo.Abp.Data; |
|
|
|
|
|
|
|
namespace MyCompanyName.MyProjectName; |
|
|
|
|
|
|
|
@ -42,6 +41,10 @@ public class Program |
|
|
|
.UseAutofac() |
|
|
|
.UseSerilog(); |
|
|
|
await builder.AddApplicationAsync<MyProjectNameModule>(); |
|
|
|
if (IsMigrateDatabase(args)) |
|
|
|
{ |
|
|
|
builder.Services.AddDataMigrationEnvironment(); |
|
|
|
} |
|
|
|
var app = builder.Build(); |
|
|
|
await app.InitializeApplicationAsync(); |
|
|
|
|
|
|
|
|
|
|
|
@ -1,6 +1,7 @@ |
|
|
|
using MyCompanyName.MyProjectName.Data; |
|
|
|
using Serilog; |
|
|
|
using Serilog.Events; |
|
|
|
using Volo.Abp.Data; |
|
|
|
|
|
|
|
namespace MyCompanyName.MyProjectName; |
|
|
|
|
|
|
|
@ -35,6 +36,10 @@ public class Program |
|
|
|
.UseAutofac() |
|
|
|
.UseSerilog(); |
|
|
|
await builder.AddApplicationAsync<MyProjectNameModule>(); |
|
|
|
if (IsMigrateDatabase(args)) |
|
|
|
{ |
|
|
|
builder.Services.AddDataMigrationEnvironment(); |
|
|
|
} |
|
|
|
var app = builder.Build(); |
|
|
|
await app.InitializeApplicationAsync(); |
|
|
|
|
|
|
|
|
|
|
|
@ -1,7 +1,7 @@ |
|
|
|
using System; |
|
|
|
using MyCompanyName.MyProjectName.Data; |
|
|
|
using Serilog; |
|
|
|
using Serilog.Events; |
|
|
|
using Volo.Abp.Data; |
|
|
|
|
|
|
|
namespace MyCompanyName.MyProjectName; |
|
|
|
|
|
|
|
@ -41,6 +41,10 @@ public class Program |
|
|
|
.UseAutofac() |
|
|
|
.UseSerilog(); |
|
|
|
await builder.AddApplicationAsync<MyProjectNameModule>(); |
|
|
|
if (IsMigrateDatabase(args)) |
|
|
|
{ |
|
|
|
builder.Services.AddDataMigrationEnvironment(); |
|
|
|
} |
|
|
|
var app = builder.Build(); |
|
|
|
await app.InitializeApplicationAsync(); |
|
|
|
|
|
|
|
|
|
|
|
@ -1,7 +1,7 @@ |
|
|
|
using MyCompanyName.MyProjectName.Data; |
|
|
|
using Serilog; |
|
|
|
using Serilog.Events; |
|
|
|
|
|
|
|
using Volo.Abp.Data; |
|
|
|
|
|
|
|
namespace MyCompanyName.MyProjectName; |
|
|
|
|
|
|
|
@ -36,6 +36,10 @@ public class Program |
|
|
|
.UseAutofac() |
|
|
|
.UseSerilog(); |
|
|
|
await builder.AddApplicationAsync<MyProjectNameModule>(); |
|
|
|
if (IsMigrateDatabase(args)) |
|
|
|
{ |
|
|
|
builder.Services.AddDataMigrationEnvironment(); |
|
|
|
} |
|
|
|
var app = builder.Build(); |
|
|
|
await app.InitializeApplicationAsync(); |
|
|
|
|
|
|
|
|
|
|
|
@ -1,8 +1,7 @@ |
|
|
|
using System; |
|
|
|
using MyCompanyName.MyProjectName.Data; |
|
|
|
using Serilog; |
|
|
|
using Serilog.Events; |
|
|
|
|
|
|
|
using Volo.Abp.Data; |
|
|
|
|
|
|
|
namespace MyCompanyName.MyProjectName; |
|
|
|
|
|
|
|
@ -42,6 +41,10 @@ public class Program |
|
|
|
.UseAutofac() |
|
|
|
.UseSerilog(); |
|
|
|
await builder.AddApplicationAsync<MyProjectNameModule>(); |
|
|
|
if (IsMigrateDatabase(args)) |
|
|
|
{ |
|
|
|
builder.Services.AddDataMigrationEnvironment(); |
|
|
|
} |
|
|
|
var app = builder.Build(); |
|
|
|
await app.InitializeApplicationAsync(); |
|
|
|
|
|
|
|
|
|
|
|
@ -6,6 +6,7 @@ using Microsoft.Extensions.Hosting; |
|
|
|
using MyCompanyName.MyProjectName.Data; |
|
|
|
using Serilog; |
|
|
|
using Volo.Abp; |
|
|
|
using Volo.Abp.Data; |
|
|
|
|
|
|
|
namespace MyCompanyName.MyProjectName.DbMigrator; |
|
|
|
|
|
|
|
@ -27,6 +28,7 @@ public class DbMigratorHostedService : IHostedService |
|
|
|
options.Services.ReplaceConfiguration(_configuration); |
|
|
|
options.UseAutofac(); |
|
|
|
options.Services.AddLogging(c => c.AddSerilog()); |
|
|
|
options.AddDataMigrationEnvironment(); |
|
|
|
})) |
|
|
|
{ |
|
|
|
await application.InitializeAsync(); |
|
|
|
|
|
|
|
@ -1,6 +1,5 @@ |
|
|
|
using MyCompanyName.MyProjectName.EntityFrameworkCore; |
|
|
|
using Volo.Abp.Autofac; |
|
|
|
using Volo.Abp.BackgroundJobs; |
|
|
|
using Volo.Abp.Modularity; |
|
|
|
|
|
|
|
namespace MyCompanyName.MyProjectName.DbMigrator; |
|
|
|
@ -12,8 +11,5 @@ namespace MyCompanyName.MyProjectName.DbMigrator; |
|
|
|
)] |
|
|
|
public class MyProjectNameDbMigratorModule : AbpModule |
|
|
|
{ |
|
|
|
public override void ConfigureServices(ServiceConfigurationContext context) |
|
|
|
{ |
|
|
|
Configure<AbpBackgroundJobOptions>(options => options.IsJobExecutionEnabled = false); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|