feat: 이메일 인증 인프라 및 API 구현 (#64) #65

Merged
seonkyu.kim merged 2 commits from feature/#64-email-verify into develop 2026-02-10 02:03:50 +00:00
Owner

📋 작업 요약

  • 이메일 인증 인프라 (ITokenStore, IEmailService) 구축
  • 회원가입 시 인증 코드 자동 발송 (콘솔 로그)
  • 이메일 인증 API 구현

Closes #64

🛠️ 작업 내용 (Changes)

  • SPMS.Application/Interfaces/ITokenStore.cs — 토큰 저장소 인터페이스 (StoreAsync, GetAsync, RemoveAsync)
  • SPMS.Application/Interfaces/IEmailService.cs — 이메일 서비스 인터페이스 (SendVerificationCodeAsync, SendPasswordResetTokenAsync)
  • SPMS.Infrastructure/Services/InMemoryTokenStore.cs — IMemoryCache 기반 구현 (향후 Redis 교체)
  • SPMS.Infrastructure/Services/ConsoleEmailService.cs — ILogger 콘솔 출력 (향후 SMTP 교체)
  • SPMS.Application/DTOs/Auth/EmailVerifyRequestDto.cs — 이메일 인증 요청 DTO
  • SPMS.Application/Interfaces/IAuthService.cs — VerifyEmailAsync 추가
  • SPMS.Application/Services/AuthService.cs — SignupAsync 인증코드 로직 + VerifyEmailAsync 구현
  • SPMS.API/Controllers/AuthController.cs — POST /v1/in/auth/email/verify 엔드포인트
  • SPMS.Infrastructure/DependencyInjection.cs — ITokenStore, IEmailService, MemoryCache DI 등록

📢 리뷰어 참고 사항 (To Reviewers)

  • 이메일 발송은 콘솔 로그로 대체 (ConsoleEmailService) — 향후 SMTP 서비스 독립 작업
  • 토큰 저장은 IMemoryCache 사용 (InMemoryTokenStore) — 향후 Redis로 교체
  • 인증 코드 TTL: 1시간, 6자리 숫자

체크리스트 (Self Checklist)

  • 빌드(Build)가 성공적으로 수행되었는가?
  • 모든 단위 테스트(Unit Test)를 통과하였는가?
  • 불필요한 로그나 주석을 제거하였는가?
  • 컨벤션(Clean Architecture, Naming)을 준수하였는가?
  • 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가?

📸 스크린샷 / 테스트 로그 (Screenshots/Logs)

빌드했습니다.
    경고 0개
    오류 0개
## 📋 작업 요약 - 이메일 인증 인프라 (ITokenStore, IEmailService) 구축 - 회원가입 시 인증 코드 자동 발송 (콘솔 로그) - 이메일 인증 API 구현 ## 🔗 관련 이슈 (Related Issues) Closes #64 ## 🛠️ 작업 내용 (Changes) - [x] `SPMS.Application/Interfaces/ITokenStore.cs` — 토큰 저장소 인터페이스 (StoreAsync, GetAsync, RemoveAsync) - [x] `SPMS.Application/Interfaces/IEmailService.cs` — 이메일 서비스 인터페이스 (SendVerificationCodeAsync, SendPasswordResetTokenAsync) - [x] `SPMS.Infrastructure/Services/InMemoryTokenStore.cs` — IMemoryCache 기반 구현 (향후 Redis 교체) - [x] `SPMS.Infrastructure/Services/ConsoleEmailService.cs` — ILogger 콘솔 출력 (향후 SMTP 교체) - [x] `SPMS.Application/DTOs/Auth/EmailVerifyRequestDto.cs` — 이메일 인증 요청 DTO - [x] `SPMS.Application/Interfaces/IAuthService.cs` — VerifyEmailAsync 추가 - [x] `SPMS.Application/Services/AuthService.cs` — SignupAsync 인증코드 로직 + VerifyEmailAsync 구현 - [x] `SPMS.API/Controllers/AuthController.cs` — POST /v1/in/auth/email/verify 엔드포인트 - [x] `SPMS.Infrastructure/DependencyInjection.cs` — ITokenStore, IEmailService, MemoryCache DI 등록 ## 📢 리뷰어 참고 사항 (To Reviewers) - 이메일 발송은 콘솔 로그로 대체 (ConsoleEmailService) — 향후 SMTP 서비스 독립 작업 - 토큰 저장은 IMemoryCache 사용 (InMemoryTokenStore) — 향후 Redis로 교체 - 인증 코드 TTL: 1시간, 6자리 숫자 ## ✅ 체크리스트 (Self Checklist) - [x] 빌드(Build)가 성공적으로 수행되었는가? - [x] 모든 단위 테스트(Unit Test)를 통과하였는가? - [x] 불필요한 로그나 주석을 제거하였는가? - [x] 컨벤션(Clean Architecture, Naming)을 준수하였는가? - [x] 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가? ## 📸 스크린샷 / 테스트 로그 (Screenshots/Logs) ``` 빌드했습니다. 경고 0개 오류 0개 ```
seonkyu.kim added 1 commit 2026-02-10 01:53:14 +00:00
- ITokenStore, IEmailService 인터페이스 정의
- InMemoryTokenStore (IMemoryCache 기반), ConsoleEmailService (로그 출력) 구현
- SignupAsync에 6자리 인증 코드 생성/저장/발송 로직 추가
- VerifyEmailAsync 구현 (코드 검증 → EmailVerified 업데이트)
- POST /v1/in/auth/email/verify 엔드포인트 추가
- DI 등록 (ITokenStore, IEmailService, MemoryCache)
seonkyu.kim self-assigned this 2026-02-10 01:53:24 +00:00
seonkyu.kim added this to the Phase 2-1: 인증 & 계정 & 서비스 API milestone 2026-02-10 01:53:26 +00:00
seonkyu.kim added the
Priority
Medium
Status
In Progress
Type
Feature
labels 2026-02-10 01:53:30 +00:00
seonkyu.kim requested review from Owners 2026-02-10 01:53:38 +00:00
seonkyu.kim added 1 commit 2026-02-10 02:03:00 +00:00
seonkyu.kim merged commit 8770fee529 into develop 2026-02-10 02:03:50 +00:00
seonkyu.kim deleted branch feature/#64-email-verify 2026-02-10 02:04:25 +00:00
seonkyu.kim added
Status
Done
and removed
Status
In Progress
labels 2026-02-10 02:10:12 +00:00
Sign in to join this conversation.
No description provided.