mirror of
https://github.com/cna-bootcamp/lifesub.git
synced 2025-12-06 08:06:24 +00:00
72 lines
1.8 KiB
Plaintext
72 lines
1.8 KiB
Plaintext
!theme mono
|
|
title 회원 서비스 - 내부 시퀀스 다이어그램
|
|
|
|
actor Client
|
|
participant "회원 컨트롤러\n(MemberController)" as Controller
|
|
participant "회원 서비스\n(MemberService)" as Service
|
|
participant "JWT 토큰 제공자\n(JwtTokenProvider)" as TokenProvider
|
|
participant "비밀번호 인코더\n(PasswordEncoder)" as PwEncoder
|
|
database "회원 DB" as DB
|
|
|
|
' 로그인 flow
|
|
Client -> Controller: POST /api/auth/login\n[로그인]
|
|
activate Controller
|
|
|
|
Controller -> Service: login(LoginRequest)
|
|
activate Service
|
|
|
|
Service -> DB: findByUserId(userId)
|
|
activate DB
|
|
DB --> Service: Member
|
|
deactivate DB
|
|
|
|
Service -> PwEncoder: matches(rawPassword, encodedPassword)
|
|
activate PwEncoder
|
|
PwEncoder --> Service: matched result
|
|
deactivate PwEncoder
|
|
|
|
alt 인증 성공
|
|
Service -> TokenProvider: createToken(member)
|
|
activate TokenProvider
|
|
TokenProvider --> Service: access/refresh tokens
|
|
deactivate TokenProvider
|
|
|
|
Service --> Controller: TokenResponse
|
|
else 인증 실패
|
|
Service --> Controller: throw InvalidCredentialsException
|
|
end
|
|
|
|
Controller --> Client: HTTP Response\n(tokens or error)
|
|
deactivate Service
|
|
deactivate Controller
|
|
|
|
' 로그아웃 flow
|
|
Client -> Controller: POST /api/auth/logout\n[로그아웃]
|
|
activate Controller
|
|
|
|
Controller -> Service: logout(LogoutRequest)
|
|
activate Service
|
|
|
|
Service --> Controller: LogoutResponse
|
|
Controller --> Client: HTTP Response\n(success message)
|
|
|
|
deactivate Service
|
|
deactivate Controller
|
|
|
|
note right of Controller
|
|
1. 요청 유효성 검증
|
|
2. 서비스 계층 호출
|
|
3. 응답 변환 및 반환
|
|
end note
|
|
|
|
note right of Service
|
|
1. 비즈니스 로직 처리
|
|
2. 사용자 인증
|
|
3. 토큰 관리
|
|
end note
|
|
|
|
note right of TokenProvider
|
|
1. JWT 토큰 생성
|
|
2. 토큰 검증
|
|
3. 토큰 무효화
|
|
end note |