From 9185afd5e9723d354bf049b612b2bcd2e587eda0 Mon Sep 17 00:00:00 2001 From: SEAN Date: Mon, 9 Feb 2026 17:32:04 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20Sandbox=20=EB=AA=A8=EB=93=9C=20?= =?UTF-8?q?=EB=AF=B8=EB=93=A4=EC=9B=A8=EC=96=B4=20=EA=B5=AC=ED=98=84=20(#3?= =?UTF-8?q?4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - SandboxMiddleware 추가: X-SPMS-TEST 헤더로 테스트 모드 감지 - HttpContext.Items["IsSandbox"] 플래그 설정 - 미들웨어 파이프라인 14번 위치에 등록 Closes #34 --- .../Extensions/ApplicationBuilderExtensions.cs | 4 ++-- SPMS.API/Middlewares/SandboxMiddleware.cs | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 SPMS.API/Middlewares/SandboxMiddleware.cs diff --git a/SPMS.API/Extensions/ApplicationBuilderExtensions.cs b/SPMS.API/Extensions/ApplicationBuilderExtensions.cs index 0d5f0ae..409b319 100644 --- a/SPMS.API/Extensions/ApplicationBuilderExtensions.cs +++ b/SPMS.API/Extensions/ApplicationBuilderExtensions.cs @@ -62,8 +62,8 @@ public static class ApplicationBuilderExtensions // -- 13. X-API-KEY 검증 (SDK/디바이스 엔드포인트용) -- app.UseMiddleware(); - // -- 14. X-SPMS-TEST 샌드박스 모드 (미구현 — Issue #14) -- - // app.UseMiddleware(); + // -- 14. X-SPMS-TEST 샌드박스 모드 -- + app.UseMiddleware(); // -- 15. Swagger UI (개발 환경만) -- if (app.Environment.IsDevelopment()) diff --git a/SPMS.API/Middlewares/SandboxMiddleware.cs b/SPMS.API/Middlewares/SandboxMiddleware.cs new file mode 100644 index 0000000..29fca01 --- /dev/null +++ b/SPMS.API/Middlewares/SandboxMiddleware.cs @@ -0,0 +1,16 @@ +namespace SPMS.API.Middlewares; + +public class SandboxMiddleware +{ + private readonly RequestDelegate _next; + + public SandboxMiddleware(RequestDelegate next) => _next = next; + + public async Task InvokeAsync(HttpContext context) + { + var isTest = context.Request.Headers["X-SPMS-TEST"].FirstOrDefault(); + context.Items["IsSandbox"] = string.Equals(isTest, "true", StringComparison.OrdinalIgnoreCase); + + await _next(context); + } +} -- 2.45.1