Files
daily/2026/07/baron-sso.md
T
2026-07-07 16:38:49 +09:00

59 lines
2.0 KiB
Markdown

# baron-sso 로그인 흐름
```mermaid
flowchart TD
subgraph Backend[backend]
B1[main.go 실행]
B2[.env 로드]
B3[Logger / DB / IDP 초기화]
B4[/api/v1/auth 라우트 등록]
B5[AuthHandler.PasswordLogin]
B6[AuthHandler.PhoneLogin]
B7[토큰 및 redirectTo 응답]
B8[/api/v1/user/me]
B1 --> B2 --> B3 --> B4
B5 --> B7
B6 --> B7
end
subgraph Userfront[userfront]
U1[main.dart 실행]
U2[GoRouter 설정]
U3[/ko/signin 또는 /ko/connect]
U4[LoginScreen 표시]
U5[_handlePasswordLogin]
U6[_handlePhoneOnlyLogin]
U7[AuthProxyService 호출]
U8[_onLoginSuccess]
U9[AuthTokenStore.setToken]
U10[redirectTo 이동 또는 dashboard 이동]
U1 --> U2 --> U3 --> U4
U5 --> U7 --> U8 --> U9 --> U10
U6 --> U7
end
U4 --> U5
U4 --> U6
U7 --> B5
U7 --> B6
B7 --> U8
U10 --> B8
```
## 흐름 요약
1. `backend/cmd/server/main.go`가 먼저 실행되어 라우트를 엽니다.
2. `userfront/lib/main.dart`가 실행되어 `/ko/signin`, `/ko/connect``LoginScreen`으로 연결합니다.
3. 사용자가 로그인하면 `login_screen.dart``_handlePasswordLogin()` 또는 `_handlePhoneOnlyLogin()`이 실행됩니다.
4. `AuthProxyService`가 백엔드 인증 API를 호출합니다.
5. 백엔드가 성공 응답을 주면 `AuthTokenStore`에 토큰을 저장합니다.
6. `redirectTo`가 있으면 그쪽으로 이동하고, 없으면 `dashboard`로 이동합니다.
## 참고 파일
* [backend/cmd/server/main.go](/home/ryu/baron-sso/backend/cmd/server/main.go)
* [userfront/lib/main.dart](/home/ryu/baron-sso/userfront/lib/main.dart)
* [userfront/lib/features/auth/presentation/login_screen.dart](/home/ryu/baron-sso/userfront/lib/features/auth/presentation/login_screen.dart)
* [userfront/lib/core/services/auth_proxy_service.dart](/home/ryu/baron-sso/userfront/lib/core/services/auth_proxy_service.dart)
* [backend/internal/handler/auth_handler.go](/home/ryu/baron-sso/backend/internal/handler/auth_handler.go)