From 489b65410e56331bcd3d368545f713c211d25c72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Sat, 14 Feb 2026 13:14:33 +0900 Subject: [PATCH] =?UTF-8?q?fix:=EC=A0=84=EC=9E=90=EC=84=9C=EB=AA=85=20getC?= =?UTF-8?q?ontract=20API=EC=97=90=20=EA=B3=84=EC=95=BD/=EC=84=9C=EB=AA=85?= =?UTF-8?q?=EC=9E=90=20=EC=83=81=ED=83=9C=20=EC=B2=B4=ED=81=AC=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 취소/거절/완료된 계약이나 이미 서명한 서명자가 서명 페이지에 접근할 때 즉시 명확한 에러 메시지를 표시하도록 개선. Co-Authored-By: Claude Opus 4.6 --- .../Controllers/ESign/EsignPublicController.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/Http/Controllers/ESign/EsignPublicController.php b/app/Http/Controllers/ESign/EsignPublicController.php index 485684e0..5274804d 100644 --- a/app/Http/Controllers/ESign/EsignPublicController.php +++ b/app/Http/Controllers/ESign/EsignPublicController.php @@ -64,6 +64,22 @@ public function getContract(string $token): JsonResponse return response()->json(['success' => false, 'message' => '계약을 찾을 수 없습니다.'], 404); } + // 계약 상태 체크: 서명 불가한 상태면 에러 반환 + $statusMessages = [ + 'draft' => '아직 발송되지 않은 계약입니다.', + 'cancelled' => '취소된 계약입니다.', + 'rejected' => '거절된 계약입니다.', + 'completed' => '이미 완료된 계약입니다.', + ]; + if (isset($statusMessages[$contract->status])) { + return response()->json(['success' => false, 'message' => $statusMessages[$contract->status]], 400); + } + + // 서명자가 이미 서명 완료한 경우 + if ($signer->status === 'signed') { + return response()->json(['success' => false, 'message' => '이미 서명을 완료하였습니다.'], 400); + } + EsignAuditLog::create([ 'tenant_id' => $contract->tenant_id, 'contract_id' => $contract->id,