Skip to content

fix(afternote): 수신자 열람 인증 실패 스낵바가 5xx 서버 내부 문구를 그대로 노출 — 서버 문구 표시를 4xx 안내 거절로 제한 #651

Closed

Description

@OnlyReadOneBook

📜 Overview (Required)

수신자 열람 인증 흐름(마스터 키 검증·이메일 본인 확인·증빙 서류 제출)의 실패 스낵바가 서버 응답 message 를 HTTP 상태 무관하게 그대로 노출합니다.

  • 서버는 5xx 에도 같은 에러 봉투 message 에 내부 문구를 실어 보냅니다 — 500 응답 body 에 SQL 원문이 그대로 실려 온 실측(fix(afternote): 등록 실패 시 서버 5xx 원문(내부 SQL 포함)을 스낵바에 그대로 노출 — 일반 문구 치환 #511)이 있습니다.
  • 운반부 ReceiverAuthRepositoryImpl 은 4개 메서드 모두 ApiException 을 status 필터 없이 ReceiverServerRejectionException 하위 3종(ReceiverEmailAuthException·ReceiverMasterKeyException·ReceiverDeliveryVerificationException)으로 변환해 serverMessage 를 그대로 싣습니다. 운반 자체는 유지 대상입니다 — 텔레메트리(shouldReportInReceiverFlow 기록 경로)가 원문을 씁니다.
  • 노출부 Throwable.toErrorPayload(DocumentUploadUiState.kt)가 status 를 보지 않고 serverMessage 가 비어 있지 않으면 ErrorPayload.Text 로 승격합니다. 하위 3종의 노출 경로는 이 헬퍼 하나로 수렴하며(호출처 4곳), 결과적으로 5xx 내부 문구가 마스터 키·이메일 인증·서류 업로드 3개 화면 스낵바에 그대로 뜰 수 있습니다.
  • 수정: 리포팅 판정 shouldReportInReceiverFlow 가 이미 "4xx + 서버 문구 = 안내된 거절" 기준을 갖고 있으므로 같은 판정으로 노출을 게이트합니다 — 안내된 4xx 거절만 서버 문구를 표시하고, 그 외(5xx·문구 없음·비수신자 예외)는 fallback 리소스로 폴백.
  • 폴백 정비: 인증번호 확인의 fallback receiver_verify_code_mismatch("인증번호가 일치하지 않습니다.")는 장애 폴백으로 쓰이면 서버 장애를 사용자 입력 탓으로 오도하므로 generic 확인 실패 문구로 교체합니다.

에디터 흐름의 같은 유형은 #511 (PR #621)에서 차단됐고, 이 건은 수신자 흐름 잔여분입니다(#605 가 만든 회귀가 아니라 기존 동작의 승계).

📌 Child Issue(Optional)

No response

📍 Note (Optional)

Metadata

Metadata

Labels

bugSomething isn't working

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions