From 3ff73d0a75abe4d57a06e1160bddf6b2f1f314c1 Mon Sep 17 00:00:00 2001 From: judymoody59 Date: Thu, 12 Jun 2025 15:04:55 +0900 Subject: [PATCH 1/2] =?UTF-8?q?KW-662/feat:=20handleScan=EC=97=90=EC=84=9C?= =?UTF-8?q?=20BUILDING=EC=9D=B8=20=EA=B2=BD=EC=9A=B0=20direction=20?= =?UTF-8?q?=EA=B0=92=EC=9D=84=20payload=EC=97=90=20=ED=8F=AC=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apis/qrApi.ts | 7 +----- src/pages/QRCodeScanner.tsx | 44 +++++++++++++++++++++++++------------ 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/src/apis/qrApi.ts b/src/apis/qrApi.ts index e279b52..d9073d9 100644 --- a/src/apis/qrApi.ts +++ b/src/apis/qrApi.ts @@ -1,13 +1,8 @@ import axiosWithAuthorization from "../contexts/axiosWithAuthorization"; // 출입 검증 -export const verifyQR = async (allowedAreas: string[], deviceAreaCode: string) => { +export const verifyQR = async (payload: any) => { try { - const payload = { - deviceAreaCode, - allowedAreas, - }; - console.log("전송할 payload:", payload); const res = await axiosWithAuthorization.post(`/entrances/verify`, payload); console.log("출입 검증:", res.data); diff --git a/src/pages/QRCodeScanner.tsx b/src/pages/QRCodeScanner.tsx index b117c1a..bbb3334 100644 --- a/src/pages/QRCodeScanner.tsx +++ b/src/pages/QRCodeScanner.tsx @@ -40,6 +40,7 @@ const QRCodeScanner = () => { const buildingName = localStorage.getItem("buildingName") || ""; const zoneName = localStorage.getItem("zoneName") || ""; + const direction = localStorage.getItem("direction") || ""; const isZoneMode = !!zoneName; const isScanningRef = useRef(false); @@ -64,21 +65,36 @@ const QRCodeScanner = () => { ); const handleScan = async (parsed: any) => { - const allowedAreas = parsed?.vp?.verifiableCredential?.credentialSubject?.allowedAreas; - const deviceAreaCode = localStorage.getItem("deviceAreaCode") || ""; - - if (Array.isArray(allowedAreas) && deviceAreaCode) { - try { - const result = await verifyQR(allowedAreas, deviceAreaCode); - showMessage(result ? STATUS_MESSAGES.ACCESS_GRANTED : STATUS_MESSAGES.ACCESS_DENIED); - } catch (err: unknown) { - console.error("출입 데이터 전송 실패", err); - showMessage(STATUS_MESSAGES.VERIFY_FAILED); + const deviceAreaCode = localStorage.getItem("deviceAreaCode") || ""; + const deviceAreaId = localStorage.getItem("deviceAreaId"); + const deviceLocationType = localStorage.getItem("deviceLocationType") || ""; + + if (Array.isArray(parsed?.accessAreaCodes) && deviceAreaCode) { + try { + const payload: any = { + ...parsed, + deviceAreaCode, + deviceAreaId: deviceAreaId ? Number(deviceAreaId) : undefined, + deviceLocationType, + }; + + // BUILDING인 경우에만 direction 추가 + if (direction) { + payload.direction = direction; } - } else { - showMessage(STATUS_MESSAGES.INVALID_QR); + + console.log("출입 verify 요청 payload:", payload); + + const result = await verifyQR(payload); + showMessage(result ? STATUS_MESSAGES.ACCESS_GRANTED : STATUS_MESSAGES.ACCESS_DENIED); + } catch (err: unknown) { + console.error("출입 데이터 전송 실패", err); + showMessage(STATUS_MESSAGES.VERIFY_FAILED); } - }; + } else { + showMessage(STATUS_MESSAGES.INVALID_QR); + } +}; scannerRef.current = scanner; (window as any).scannerRef = scannerRef; @@ -112,7 +128,7 @@ const QRCodeScanner = () => { } setError(null); - if (typeof parsed === "object" && parsed?.vp?.verifiableCredential?.credentialSubject) { + if (typeof parsed === "object" && parsed?.passId && parsed?.accessAreaCodes) { handleScan(parsed); } else { showMessage(STATUS_MESSAGES.INVALID_QR); From f87d5fdd8ead1d4ad5fa1ff8da57f94e16b3129a Mon Sep 17 00:00:00 2001 From: judymoody59 Date: Thu, 12 Jun 2025 15:06:31 +0900 Subject: [PATCH 2/2] =?UTF-8?q?KW-662/fix:=20QR=20=ED=99=94=EB=A9=B4?= =?UTF-8?q?=EC=97=90=20=EA=B1=B4=EB=AC=BC=20=EC=B6=9C=EC=9E=85=20=EB=B0=A9?= =?UTF-8?q?=ED=96=A5=20=EC=A0=95=EB=B3=B4=20=ED=91=9C=EC=8B=9C=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/QRCodeScanner.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/pages/QRCodeScanner.tsx b/src/pages/QRCodeScanner.tsx index bbb3334..7bc040f 100644 --- a/src/pages/QRCodeScanner.tsx +++ b/src/pages/QRCodeScanner.tsx @@ -185,7 +185,9 @@ const QRCodeScanner = () => { KEYWE Logo

QR 스캔 후 출입이 가능합니다!

- {isZoneMode ? `${buildingName} / ${zoneName}` : buildingName} + {isZoneMode + ? `${buildingName} / ${zoneName}` + : `${buildingName} / ${direction}`}