improvement: 임시 비밀번호 발급 및 강제변경 플로우 구현 (#207) #208

Merged
seonkyu.kim merged 1 commits from improvement/#207-temp-password into develop 2026-02-25 01:52:53 +00:00
Owner

📋 작업 요약

  • 임시 비밀번호 발급 API (POST /v1/in/account/password/temp) 신규 추가
  • Admin 엔티티에 강제변경 플래그(MustChangePassword, TempPasswordIssuedAt) 추가
  • 로그인 시 CHANGE_PASSWORD 분기 추가 (VERIFY_EMAIL > CHANGE_PASSWORD > GO_DASHBOARD)
  • 비밀번호 변경 시 강제변경 플래그 자동 해제

Closes #207

🛠️ 작업 내용 (Changes)

  • SPMS.Domain/Entities/Admin.cs — MustChangePassword, TempPasswordIssuedAt 필드 추가
  • SPMS.Infrastructure/Migrations/ — EF Core 마이그레이션 생성 및 적용
  • SPMS.Application/Interfaces/IEmailService.cs — SendTempPasswordAsync 추가
  • SPMS.Infrastructure/Services/ConsoleEmailService.cs — SendTempPasswordAsync 구현
  • SPMS.Application/DTOs/Account/TempPasswordRequestDto.cs — 신규 DTO
  • SPMS.Application/Interfaces/IAuthService.cs — IssueTempPasswordAsync 추가
  • SPMS.Application/Services/AuthService.cs — IssueTempPasswordAsync, LoginAsync 분기, ChangePasswordAsync 플래그 해제
  • SPMS.Application/DTOs/Auth/LoginResponseDto.cs — must_change_password 필드 추가
  • SPMS.API/Controllers/PasswordController.cs — POST /v1/in/account/password/temp 엔드포인트

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

  • 계정 존재 비노출: forgot과 동일 패턴 — 미등록 이메일도 동일 성공 응답
  • 임시 비밀번호: 12자, 영대소+숫자+특수문자 조합 (SecurityRandom)
  • 분기 우선순위: VERIFY_EMAIL > CHANGE_PASSWORD > GO_DASHBOARD
  • 기존 forgot/reset 경로는 변경 없음

체크리스트 (Self Checklist)

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

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

빌드 성공: 경고 0개, 오류 0개
DB 마이그레이션: AddTempPasswordFieldsToAdmin 적용 완료

## 📋 작업 요약 - 임시 비밀번호 발급 API (`POST /v1/in/account/password/temp`) 신규 추가 - Admin 엔티티에 강제변경 플래그(`MustChangePassword`, `TempPasswordIssuedAt`) 추가 - 로그인 시 `CHANGE_PASSWORD` 분기 추가 (VERIFY_EMAIL > CHANGE_PASSWORD > GO_DASHBOARD) - 비밀번호 변경 시 강제변경 플래그 자동 해제 ## 🔗 관련 이슈 (Related Issues) Closes #207 ## 🛠️ 작업 내용 (Changes) - [x] `SPMS.Domain/Entities/Admin.cs` — MustChangePassword, TempPasswordIssuedAt 필드 추가 - [x] `SPMS.Infrastructure/Migrations/` — EF Core 마이그레이션 생성 및 적용 - [x] `SPMS.Application/Interfaces/IEmailService.cs` — SendTempPasswordAsync 추가 - [x] `SPMS.Infrastructure/Services/ConsoleEmailService.cs` — SendTempPasswordAsync 구현 - [x] `SPMS.Application/DTOs/Account/TempPasswordRequestDto.cs` — 신규 DTO - [x] `SPMS.Application/Interfaces/IAuthService.cs` — IssueTempPasswordAsync 추가 - [x] `SPMS.Application/Services/AuthService.cs` — IssueTempPasswordAsync, LoginAsync 분기, ChangePasswordAsync 플래그 해제 - [x] `SPMS.Application/DTOs/Auth/LoginResponseDto.cs` — must_change_password 필드 추가 - [x] `SPMS.API/Controllers/PasswordController.cs` — POST /v1/in/account/password/temp 엔드포인트 ## 📢 리뷰어 참고 사항 (To Reviewers) - 계정 존재 비노출: forgot과 동일 패턴 — 미등록 이메일도 동일 성공 응답 - 임시 비밀번호: 12자, 영대소+숫자+특수문자 조합 (SecurityRandom) - 분기 우선순위: VERIFY_EMAIL > CHANGE_PASSWORD > GO_DASHBOARD - 기존 forgot/reset 경로는 변경 없음 ## ✅ 체크리스트 (Self Checklist) - [x] 빌드(Build)가 성공적으로 수행되었는가? - [x] 모든 단위 테스트(Unit Test)를 통과하였는가? - [x] 불필요한 로그나 주석을 제거하였는가? - [x] 컨벤션(Clean Architecture, Naming)을 준수하였는가? - [x] 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가? ## 📸 스크린샷 / 테스트 로그 (Screenshots/Logs) 빌드 성공: 경고 0개, 오류 0개 DB 마이그레이션: AddTempPasswordFieldsToAdmin 적용 완료
seonkyu.kim added 1 commit 2026-02-25 01:52:04 +00:00
- Admin 엔티티에 MustChangePassword, TempPasswordIssuedAt 필드 추가
- POST /v1/in/account/password/temp 엔드포인트 추가
- 임시비밀번호 생성(12자, 영대소+숫자+특수) 및 메일 발송
- 로그인 시 CHANGE_PASSWORD 분기 추가 (VERIFY_EMAIL > CHANGE_PASSWORD > GO_DASHBOARD)
- 비밀번호 변경 시 MustChangePassword 플래그 자동 해제
- LoginResponseDto에 must_change_password 필드 추가
- EF Core 마이그레이션 생성 및 적용

Closes #207
seonkyu.kim added the
Priority
Medium
Status
In Progress
Type
Improvement
labels 2026-02-25 01:52:12 +00:00
seonkyu.kim self-assigned this 2026-02-25 01:52:16 +00:00
seonkyu.kim added this to the Phase 0: 공통 기반 + 인증 milestone 2026-02-25 01:52:19 +00:00
seonkyu.kim requested review from Owners 2026-02-25 01:52:28 +00:00
seonkyu.kim merged commit 09831ebcbf into develop 2026-02-25 01:52:53 +00:00
seonkyu.kim deleted branch improvement/#207-temp-password 2026-02-25 01:53:06 +00:00
seonkyu.kim added
Status
Done
and removed
Status
In Progress
labels 2026-02-25 01:53:56 +00:00
Sign in to join this conversation.
No description provided.