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,