Add allow all CORS policy to download endpoints

This commit is contained in:
Kieran 2023-03-04 19:52:21 +00:00
parent 49ad601d13
commit ef3ebb867d
Signed by: Kieran
GPG Key ID: DE71CEB3925BE941
2 changed files with 19 additions and 5 deletions

View File

@ -1,4 +1,5 @@
using System.Net; using System.Net;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using VoidCat.Model; using VoidCat.Model;
using VoidCat.Model.Payments; using VoidCat.Model.Payments;
@ -28,6 +29,7 @@ public class DownloadController : Controller
[HttpOptions] [HttpOptions]
[Route("{id}")] [Route("{id}")]
[EnableCors("*")]
public Task DownloadFileOptions([FromRoute] string id) public Task DownloadFileOptions([FromRoute] string id)
{ {
var gid = id.FromBase58Guid(); var gid = id.FromBase58Guid();
@ -41,6 +43,7 @@ public class DownloadController : Controller
[ResponseCache(Location = ResponseCacheLocation.Any, Duration = 86400)] [ResponseCache(Location = ResponseCacheLocation.Any, Duration = 86400)]
[HttpGet] [HttpGet]
[Route("{id}")] [Route("{id}")]
[EnableCors("*")]
public async Task DownloadFile([FromRoute] string id) public async Task DownloadFile([FromRoute] string id)
{ {
var gid = id.FromBase58Guid(); var gid = id.FromBase58Guid();

View File

@ -78,6 +78,7 @@ public static class VoidStartup
{ {
o.LoggingFields = HttpLoggingFields.RequestPropertiesAndHeaders | o.LoggingFields = HttpLoggingFields.RequestPropertiesAndHeaders |
HttpLoggingFields.ResponsePropertiesAndHeaders; HttpLoggingFields.ResponsePropertiesAndHeaders;
o.RequestBodyLogLimit = 4096; o.RequestBodyLogLimit = 4096;
o.ResponseBodyLogLimit = 4096; o.ResponseBodyLogLimit = 4096;
@ -89,6 +90,7 @@ public static class VoidStartup
o.RequestHeaders.Add(h); o.RequestHeaders.Add(h);
} }
}); });
services.AddHttpClient(); services.AddHttpClient();
services.AddSwaggerGen(c => services.AddSwaggerGen(c =>
{ {
@ -99,6 +101,7 @@ public static class VoidStartup
Name = "Authorization", Name = "Authorization",
Type = SecuritySchemeType.ApiKey Type = SecuritySchemeType.ApiKey
}); });
c.AddSecurityRequirement(new OpenApiSecurityRequirement c.AddSecurityRequirement(new OpenApiSecurityRequirement
{ {
{ {
@ -113,9 +116,11 @@ public static class VoidStartup
new string[] { } new string[] { }
} }
}); });
var path = Path.Combine(AppContext.BaseDirectory, $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"); var path = Path.Combine(AppContext.BaseDirectory, $"{Assembly.GetExecutingAssembly().GetName().Name}.xml");
c.IncludeXmlComments(path); c.IncludeXmlComments(path);
}); });
services.AddCors(opt => services.AddCors(opt =>
{ {
opt.AddDefaultPolicy(p => opt.AddDefaultPolicy(p =>
@ -125,11 +130,20 @@ public static class VoidStartup
.AllowCredentials() .AllowCredentials()
.WithOrigins(voidSettings.CorsOrigins.Select(a => a.OriginalString).ToArray()); .WithOrigins(voidSettings.CorsOrigins.Select(a => a.OriginalString).ToArray());
}); });
opt.AddPolicy("*", p =>
{
p.AllowAnyMethod()
.AllowAnyHeader()
.AllowAnyOrigin();
}); });
});
services.AddRazorPages(); services.AddRazorPages();
services.AddRouting(); services.AddRouting();
services.AddControllers() services.AddControllers()
.AddNewtonsoftJson((opt) => { ConfigJsonSettings(opt.SerializerSettings); }); .AddNewtonsoftJson((opt) => { ConfigJsonSettings(opt.SerializerSettings); });
services.AddHealthChecks(); services.AddHealthChecks();
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
@ -146,10 +160,7 @@ public static class VoidStartup
}; };
}); });
services.AddAuthorization((opt) => services.AddAuthorization((opt) => { opt.AddPolicy(Policies.RequireAdmin, (auth) => { auth.RequireRole(Roles.Admin); }); });
{
opt.AddPolicy(Policies.RequireAdmin, (auth) => { auth.RequireRole(Roles.Admin); });
});
services.AddTransient<RazorPartialToStringRenderer>(); services.AddTransient<RazorPartialToStringRenderer>();
services.AddAnalytics(voidSettings); services.AddAnalytics(voidSettings);