public static SeedBuilder AddDataAccess(this SeedBuilder builder) { builder.ConfigureServices(services => { services.AddScoped <IDataMigrationManager, DataMigrationManager>(); services.AddScoped <IModuleTenantEvents, AutoDataMigration>(); services.AddScoped <IDataMigrator, DataMigrator>(); services.TryAddDataProvider(name: "Microsoft SQLServer", provider: "SqlConnection"); services.TryAddDataProvider(name: "MySql Database", provider: "MySql"); services.AddSingleton <IStore>(sp => { return(new Store(sp)); }); services.AddScoped <IDbContext>(sp => { var typeConfigs = sp.GetServices <IEntityTypeConfigurationProvider>() .InvokeAsync(provider => provider.GetEntityTypeConfigurationsAsync(), null) .Result; return(sp.GetService <IStore>()?.CreateDbContext(typeConfigs.ToArray())); }); }); return(builder); }
private static void AddPluginServices(SeedBuilder builder) { builder.ApplicationServices.AddPluginManagerHost(); builder.ConfigureServices(services => { services.AddPluginManager(); }); }
public static SeedBuilder AddCaching(this SeedBuilder builder) { builder.ConfigureServices(services => { services.AddSingleton <ISignal, Signal>(); services.AddSingleton <IMemoryCache, MemoryCache>(); }); return(builder); }
public static SeedBuilder AddDeferredTasks(this SeedBuilder builder) { builder.ConfigureServices(services => { services.TryAddScoped <IDeferredTaskEngine, DeferredTaskEngine>(); services.TryAddScoped <IDeferredTaskState, HttpContextTaskState>(); }); return(builder); }
public static SeedBuilder AddBackgroundTasks(this SeedBuilder builder) { builder.ConfigureServices(services => { services.TryAddSingleton <IBackgroundTaskService, BackgroundTaskService>(); services.AddScoped <BackgroundTasksStarter>(); services.AddScoped <IModuleTenantEvents>(sp => sp.GetRequiredService <BackgroundTasksStarter>()); }); return(builder); }
public static SeedBuilder AddTenantFeatures(this SeedBuilder builder, params string[] featureIds) { builder.ConfigureServices(services => { foreach (var featureId in featureIds) { services.AddTransient(sp => new EngineFeature(featureId, alwaysEnabled: true)); } }); return(builder); }
private static void AddAuthentication(SeedBuilder builder) { builder.ApplicationServices.AddAuthentication(); builder.ConfigureServices(services => { services.AddAuthentication(); services.AddSingleton <IAuthenticationSchemeProvider, AuthenticationSchemeProvider>(); }) .Configure(app => { app.UseAuthentication(); }); }
private static void AddDataProtection(SeedBuilder builder) { builder.ConfigureServices((services, serviceProvider) => { var settings = serviceProvider.GetRequiredService <EngineSettings>(); var options = serviceProvider.GetRequiredService <IOptions <EngineOptions> >(); var directory = Directory.CreateDirectory(Path.Combine( options.Value.ApplicationDataPath, options.Value.ContainerName, settings.Name, "DataProtection-Keys")); services.Add(new ServiceCollection() .AddDataProtection() .PersistKeysToFileSystem(directory) .SetApplicationName(settings.Name) .Services); }); }
private static void AddAntiForgery(SeedBuilder builder) { //builder.ApplicationServices.AddAntiforgery(); builder.ConfigureServices((services, serviceProvider) => { var settings = serviceProvider.GetRequiredService <EngineSettings>(); var tenantName = settings.Name; var tenantPrefix = "/" + settings.RequestUrlPrefix; services.AddAntiforgery(options => { options.HeaderName = "X-XSRF-TOKEN"; options.Cookie.Name = "seedforgery_" + tenantName; options.Cookie.Path = tenantPrefix; }); }); }
private static void AddTenantCookie(SeedBuilder builder) { builder.ConfigureServices((service, serviceProvider) => { }); }