diff --git a/src/Web/WebhookClient/Program.cs b/src/Web/WebhookClient/Program.cs index d697a943a..653cb25a6 100644 --- a/src/Web/WebhookClient/Program.cs +++ b/src/Web/WebhookClient/Program.cs @@ -14,6 +14,37 @@ builder.Services.AddControllers(); var app = builder.Build(); app.UseServiceDefaults(); +app.Map("/check", capp => +{ + capp.Run(async (context) => + { + if ("OPTIONS".Equals(context.Request.Method, StringComparison.InvariantCultureIgnoreCase)) + { + var validateToken = bool.TrueString.Equals(builder.Configuration["ValidateToken"], StringComparison.InvariantCultureIgnoreCase); + var header = context.Request.Headers[HeaderNames.WebHookCheckHeader]; + var value = header.FirstOrDefault(); + var tokenToValidate = builder.Configuration["Token"]; + if (!validateToken || value == tokenToValidate) + { + if (!string.IsNullOrWhiteSpace(tokenToValidate)) + { + context.Response.Headers.Add(HeaderNames.WebHookCheckHeader, tokenToValidate); + } + context.Response.StatusCode = (int)HttpStatusCode.OK; + } + else + { + await context.Response.WriteAsync("Invalid token"); + context.Response.StatusCode = (int)HttpStatusCode.BadRequest; + } + } + else + { + context.Response.StatusCode = (int)HttpStatusCode.BadRequest; + } + }); +}); + // Fix samesite issue when running eShop from docker-compose locally as by default http protocol is being used // Refer to https://github.com/dotnet-architecture/eShopOnContainers/issues/1391 app.UseCookiePolicy(new CookiePolicyOptions { MinimumSameSitePolicy = SameSiteMode.Lax });