Skip to content

feat(auth/user): 이메일/비밀번호 회원가입·로그인 API 추가 [KAN-305]#48

Open
lian2945 wants to merge 11 commits into
mainfrom
feat/305
Open

feat(auth/user): 이메일/비밀번호 회원가입·로그인 API 추가 [KAN-305]#48
lian2945 wants to merge 11 commits into
mainfrom
feat/305

Conversation

@lian2945

@lian2945 lian2945 commented Jul 2, 2026

Copy link
Copy Markdown
Collaborator

관련 이슈

  • KAN-305

변경 사항 요약

user 서비스

  • OAuth2ProviderLOCAL 추가
  • User 도메인에 passwordHash 필드 및 createEmailBuilder 추가
  • SignupWithEmailUseCase / LoginWithEmailUseCase 및 구현 서비스 추가
  • UserGrpcServicesignupWithEmail / loginWithEmail RPC 추가
  • BCryptPasswordEncoder 빈 등록
  • findByEmail 쿼리, DuplicateEmailException / InvalidPasswordException 추가

auth 서비스

  • POST /auth/signup: BCrypt 해싱 → user gRPC → 토큰 발급 (access token + refresh cookie)
  • POST /auth/email-login: user gRPC에서 BCrypt 검증 → 토큰 발급
  • UserEmailGrpcAdapter: FutureStub + @CircuitBreaker + @TimeLimiter 패턴
  • BCryptPasswordEncoder 빈 등록

테스트 체크리스트

  • POST /auth/signup → 201 + access token + refresh cookie 확인
  • POST /auth/email-login → 200 + 토큰 확인
  • 잘못된 비밀번호로 로그인 → 401 응답 확인
  • 중복 이메일 회원가입 → 409 응답 확인
  • user 서비스 컴파일: ./gradlew :services:user:compileJava
  • auth 서비스 컴파일: ./gradlew :services:auth:compileJava

lian2945 and others added 11 commits June 21, 2026 15:10
…293]

- CreatorGrpcAdapter: BlockingStub → FutureStub, withDeadlineAfter 제거
- @Timelimiter(name = "creatorService") 추가
- 반환 타입 CreatorId → CompletableFuture<CreatorId> 전환
- fallback 반환 타입도 CompletableFuture<CreatorId>로 통일
- CreatorIdQueryPort: 반환 타입 CompletableFuture<CreatorId>로 업데이트
- 서비스 레이어: getCreatorId().join() 호출로 변경

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…h") 제거 [KAN-289]

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…n import 제거 [KAN-289]

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… 전 계층 제거 [KAN-293]

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…[KAN-289]

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- OAuth2Provider에 LOCAL 추가
- User 도메인에 passwordHash 필드 및 createEmailBuilder 추가
- SignupWithEmail / LoginWithEmail UseCase 및 Service 구현
- UserGrpcService에 signupWithEmail / loginWithEmail RPC 추가
- BCryptPasswordEncoder 빈 등록 (SecurityConfiguration)
- findByEmail 쿼리 및 DuplicateEmailException / InvalidPasswordException 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- POST /auth/signup: BCrypt 해싱 → user 서비스 gRPC → 토큰 발급
- POST /auth/email-login: user 서비스에서 BCrypt 검증 → 토큰 발급
- UserEmailGrpcAdapter: EmailUserPort 구현 (FutureStub + CircuitBreaker + TimeLimiter)
- BCryptPasswordEncoder 빈 등록 (SecurityConfiguration)
- SignupService / EmailLoginService: 기존 LoginService 토큰 발급 패턴 재사용

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 2, 2026 23:52

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants