아이디 찾기

AUTH-FIND-ID · /find-id

실제 화면 열기 ↗
기능
8
API 호출
1
가드레일
2
id 가 테스트 이름
구현 단계
6 / 6
완료인증 · 회원wvctesol-auth :8081클라이언트 컴포넌트211

개발 스펙

이 화면에서 할 수 있어야 하는 것 (1)

  • 이름 + 이메일 또는 이름 + 연락처로 아이디를 찾는다.

비즈니스 규칙 (1)

  • 찾은 아이디는 화면에 직접 보여주지 않고 이메일로 보낸다.
    근거: find-id 화면 문구

API (1)

메서드경로권한모듈 · 설명
POST/api/identity/members/find-id공개
아이디 찾기 요청.
domains:identity:identity-web

가드레일 (2) — id 가 곧 테스트 이름이다

id반드시 만족해야 하는 것등급
find-id-sends-not-returns
찾은 아이디를 응답에 실으면 안 된다. 메일 · 문자로만 보낸다.
응답에 실으면 이름+이메일 조합으로 가입 여부와 아이디를 캐낼 수 있다.
critical
find-id-no-direct-disclosure
응답 본문에 아이디를 그대로 실어 보내면 안 된다. 존재 여부도 드러나면 안 된다.
high

구현 계획 (6/6)

  1. AccountNotifications 로 메일 · 문자 발송 연결notification-app
  2. findByNameAndEmail · findByNameAndPhone 포트identity-domain
  3. FindAccountUseCaseidentity-app
  4. 조회 메서드 구현identity-infrastructure
  5. /api/identity/members/find-id 구현identity-web
  6. Next.js 를 BFF 로 전환 — Prisma 직접 접근 제거wvctesol

서버 사이드 구현 계획 — 자바 객체별 요구사항 (3/3)

객체모듈책임 · 지켜야 할 것
NotificationSender
interface
notification-domain
알림 발송 포트.
  • available(channel) 로 보낼 수 있는 상태인지 먼저 묻는다.
  • send 는 실패해도 예외를 던지지 않는다. 보냈으면 true.
  • 구현이 SMTP 든 알리고든 도메인은 알지 못한다.
FindAccountUseCase
service
identity-app
이름+이메일 또는 이름+연락처로 회원을 찾는다.
  • 찾았는지 여부를 호출자에게 알려주지 않는다 — 이름·이메일 조합으로 가입 여부를 캐낼 수 있다.
  • 연락처는 숫자만 남겨 비교한다. DB 에 하이픈 없이 저장돼 있다.
IdentityController.findId
controller
identity-web
POST /api/identity/members/find-id.
  • 응답은 언제나 AcceptedResponse 하나뿐이다. 찾은 아이디를 본문에 싣지 않는다.
  • 실제 안내는 알림 모듈이 이메일·SMS 로 보낸다(TODO).

테스트 방법 (2)

가드레일종류확인 방법
find-id-sends-not-returnse2e있는 회원 · 없는 회원의 응답이 완전히 같고, 어느 쪽에도 아이디가 없다
find-id-no-direct-disclosuree2e응답 본문에 loginId 문자열이 없고, 존재/미존재 계정의 응답이 동일

스냅샷

AUTH-FIND-ID 스냅샷

기능 목록 (8)

데이터
  • ·API 조회/api/identity/auth/find-id
입력
  • ·2개
  • ·제출 버튼2개
  • ·입력 필드6개
액션
  • ·서버 액션findId
  • ·서버 액션findId
인증
  • ·세션 확인
  • ·로그인/로그아웃 호출

화면 이동

← 이 화면으로 오는 곳
이 화면에서 가는 곳 →

연결

API
  • /api/identity/auth/find-id
소스
src/app/find-id/page.tsx