Commit 6f0d8bc
feat: 로그아웃 기능 구현 및 로그인 상태 유지 시스템 완성
✅ **핵심 기능**
- 로그아웃 시 토큰 + SharedPreferences 전체 삭제
- 온보딩 상태 초기화로 재로그인 시 온보딩 재표시
- 앱 시작 시 자동 로그인 상태 체크 (토큰 존재 여부)
- Mock/Real 모드 모두 지원
🔧 **구현 세부사항**
1. **AuthRepository.logout()** 개선
- FlutterSecureStorage 토큰 삭제
- SharedPreferences 전체 삭제 (온보딩 상태 포함)
- Real 모드에서만 API 로그아웃 호출 (Mock 모드 스킵)
2. **LoginController.logout()** 추가
- Repository logout() 호출
- State 초기화
- 성공/실패 boolean 반환
3. **ProfilePage 로그아웃 버튼 연동**
- 로그아웃 다이얼로그에서 LoginController.logout() 호출
- 성공 시 /login 페이지로 이동
- 실패 시 에러 스낵바 표시
4. **AppRouter 인증 가드 구현**
- redirect에서 토큰 존재 여부 체크
- 토큰 없으면 → 온보딩 체크 → 로그인 페이지
- 토큰 있으면 → 정상 진행
- initialLocation을 /onboarding으로 변경
📱 **사용자 플로우**
1. 앱 시작 → 온보딩 체크
2. 온보딩 안 봄 → 온보딩 페이지
3. 온보딩 봤지만 토큰 없음 → 로그인 페이지
4. 토큰 있음 → 피드 페이지
5. 로그아웃 → 토큰 + 로컬 데이터 삭제 → 로그인 페이지
🎨 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>1 parent ae743f1 commit 6f0d8bc
File tree
5 files changed
+80
-15
lines changed- sejong_catch_frontend/lib
- core/config
- features
- auth
- data/repositories
- presentation/controllers
- profile/presentation/pages
5 files changed
+80
-15
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| 13 | + | |
| 14 | + | |
13 | 15 | | |
14 | 16 | | |
15 | 17 | | |
| |||
24 | 26 | | |
25 | 27 | | |
26 | 28 | | |
27 | | - | |
| 29 | + | |
28 | 30 | | |
29 | 31 | | |
30 | 32 | | |
| |||
128 | 130 | | |
129 | 131 | | |
130 | 132 | | |
131 | | - | |
132 | | - | |
133 | | - | |
134 | | - | |
135 | | - | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
136 | 136 | | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
137 | 153 | | |
138 | 154 | | |
139 | 155 | | |
| |||
Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 26 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
98 | 98 | | |
99 | 99 | | |
100 | 100 | | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
101 | 127 | | |
Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 30 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
| 4 | + | |
4 | 5 | | |
5 | 6 | | |
6 | 7 | | |
7 | 8 | | |
| 9 | + | |
8 | 10 | | |
9 | 11 | | |
10 | 12 | | |
| |||
624 | 626 | | |
625 | 627 | | |
626 | 628 | | |
627 | | - | |
| 629 | + | |
| 630 | + | |
628 | 631 | | |
629 | | - | |
630 | | - | |
631 | | - | |
632 | | - | |
633 | | - | |
634 | | - | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
635 | 658 | | |
636 | 659 | | |
637 | 660 | | |
| |||
0 commit comments