Merge pull request #176 from sbwalker/master

fixed issue #175 when running in Wasm
This commit is contained in:
Shaun Walker 2019-11-18 11:13:37 -05:00 committed by GitHub
commit c64e3bca52
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -83,10 +83,10 @@ namespace Oqtane.Server
options.AddPolicy("ViewModule", policy => policy.Requirements.Add(new PermissionRequirement("Module", "View"))); options.AddPolicy("ViewModule", policy => policy.Requirements.Add(new PermissionRequirement("Module", "View")));
options.AddPolicy("EditModule", policy => policy.Requirements.Add(new PermissionRequirement("Module", "Edit"))); options.AddPolicy("EditModule", policy => policy.Requirements.Add(new PermissionRequirement("Module", "Edit")));
}); });
services.AddScoped<IAuthorizationHandler, PermissionHandler>();
// register scoped core services // register scoped core services
services.AddScoped<SiteState>(); services.AddScoped<SiteState>();
services.AddScoped<IAuthorizationHandler, PermissionHandler>();
services.AddScoped<IInstallationService, InstallationService>(); services.AddScoped<IInstallationService, InstallationService>();
services.AddScoped<IModuleDefinitionService, ModuleDefinitionService>(); services.AddScoped<IModuleDefinitionService, ModuleDefinitionService>();
services.AddScoped<IThemeService, ThemeService>(); services.AddScoped<IThemeService, ThemeService>();
@ -309,6 +309,9 @@ namespace Oqtane.Server
options.AddPolicy("ViewModule", policy => policy.Requirements.Add(new PermissionRequirement("Module", "View"))); options.AddPolicy("ViewModule", policy => policy.Requirements.Add(new PermissionRequirement("Module", "View")));
options.AddPolicy("EditModule", policy => policy.Requirements.Add(new PermissionRequirement("Module", "Edit"))); options.AddPolicy("EditModule", policy => policy.Requirements.Add(new PermissionRequirement("Module", "Edit")));
}); });
// register scoped core services
services.AddScoped<SiteState>();
services.AddScoped<IAuthorizationHandler, PermissionHandler>(); services.AddScoped<IAuthorizationHandler, PermissionHandler>();
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
@ -362,11 +365,6 @@ namespace Oqtane.Server
services.AddSingleton<IConfigurationRoot>(Configuration); services.AddSingleton<IConfigurationRoot>(Configuration);
services.AddSingleton<IInstallationManager, InstallationManager>(); services.AddSingleton<IInstallationManager, InstallationManager>();
// install any modules or themes
ServiceProvider sp = services.BuildServiceProvider();
var InstallationManager = sp.GetRequiredService<IInstallationManager>();
InstallationManager.InstallPackages("Modules,Themes");
// register transient scoped core services // register transient scoped core services
services.AddTransient<IModuleDefinitionRepository, ModuleDefinitionRepository>(); services.AddTransient<IModuleDefinitionRepository, ModuleDefinitionRepository>();
services.AddTransient<IThemeRepository, ThemeRepository>(); services.AddTransient<IThemeRepository, ThemeRepository>();
@ -443,6 +441,21 @@ namespace Oqtane.Server
} }
} }
// dynamically register hosted services
foreach (Assembly assembly in assemblies)
{
Type[] servicetypes = assembly.GetTypes()
.Where(item => item.GetInterfaces().Contains(typeof(IHostedService)))
.ToArray();
foreach (Type servicetype in servicetypes)
{
if (servicetype.Name != "HostedServiceBase")
{
services.AddSingleton(typeof(IHostedService), servicetype);
}
}
}
services.AddSwaggerGen(c => services.AddSwaggerGen(c =>
{ {
c.SwaggerDoc("v1", new OpenApiInfo { Title = "Oqtane", Version = "v1" }); c.SwaggerDoc("v1", new OpenApiInfo { Title = "Oqtane", Version = "v1" });
@ -456,7 +469,7 @@ namespace Oqtane.Server
} }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IInstallationManager InstallationManager)
{ {
app.UseResponseCompression(); app.UseResponseCompression();
@ -467,7 +480,7 @@ namespace Oqtane.Server
} }
// install any modules or themes // install any modules or themes
InstallationManager.InstallPackages("Modules,Themes"); InstallationManager.InstallPackages("Modules,Themes", false);
app.UseClientSideBlazorFiles<Client.Startup>(); app.UseClientSideBlazorFiles<Client.Startup>();
app.UseStaticFiles(); app.UseStaticFiles();