diff --git a/src/Billing/BillingSettings.cs b/src/Billing/BillingSettings.cs new file mode 100644 index 0000000000..25b4e3cb40 --- /dev/null +++ b/src/Billing/BillingSettings.cs @@ -0,0 +1,7 @@ +namespace Bit.Billing +{ + public class BillingSettings + { + public virtual string StripeWebhookKey { get; set; } + } +} diff --git a/src/Billing/Controllers/StripeController.cs b/src/Billing/Controllers/StripeController.cs index a91dd9d1a7..c9c62ebe6b 100644 --- a/src/Billing/Controllers/StripeController.cs +++ b/src/Billing/Controllers/StripeController.cs @@ -1,14 +1,27 @@ using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Options; namespace Bit.Billing.Controllers { [Route("stripe")] public class StripeController : Controller { - [HttpPost("webhook")] - public void PostWebhook([FromBody]dynamic body, [FromQuery] string key) - { + private readonly BillingSettings _billingSettings; + public StripeController(IOptions billingSettings) + { + _billingSettings = billingSettings?.Value; + } + + [HttpPost("webhook")] + public IActionResult PostWebhook([FromBody]dynamic body, [FromQuery] string key) + { + if(key != _billingSettings.StripeWebhookKey) + { + return new BadRequestResult(); + } + + return new OkResult(); } } } diff --git a/src/Billing/Startup.cs b/src/Billing/Startup.cs index b4dcf760c4..def0594a94 100644 --- a/src/Billing/Startup.cs +++ b/src/Billing/Startup.cs @@ -7,6 +7,7 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; +using Bit.Core; namespace Bit.Billing { @@ -33,6 +34,15 @@ namespace Bit.Billing public void ConfigureServices(IServiceCollection services) { + // Options + services.AddOptions(); + + // Settings + //var globalSettings = new GlobalSettings(); + //ConfigurationBinder.Bind(Configuration.GetSection("GlobalSettings"), globalSettings); + //services.AddSingleton(s => globalSettings); + services.Configure(Configuration.GetSection("BillingSettings")); + services.AddMvc(); } diff --git a/src/Billing/settings.json b/src/Billing/settings.json index 5fff67bacc..f5863b13af 100644 --- a/src/Billing/settings.json +++ b/src/Billing/settings.json @@ -4,5 +4,11 @@ "LogLevel": { "Default": "Warning" } + }, + "globalSettings": { + + }, + "billingSettings": { + "stripeWebhookKey": "SECRET" } }