# 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)