Skip to content

Commit

Permalink
refactor: apply new login logic in google and kakao login button
Browse files Browse the repository at this point in the history
  • Loading branch information
SeoHyeonSim committed Feb 5, 2025
1 parent 6c74b75 commit 8020e12
Show file tree
Hide file tree
Showing 7 changed files with 115 additions and 311 deletions.
62 changes: 31 additions & 31 deletions lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,33 +1,11 @@
// import 'package:flutter/material.dart';
// import 'package:on_time_front/core/di/di_setup.dart';
// import 'package:on_time_front/presentation/shared/router/go_router.dart';
// import 'package:on_time_front/presentation/shared/theme/theme.dart';

// void main() async {
// configureDependencies();
// runApp(MyApp());
// WidgetsFlutterBinding.ensureInitialized();
// }

// class MyApp extends StatelessWidget {
// const MyApp({super.key});

// @override
// Widget build(BuildContext context) {
// return MaterialApp.router(
// routerConfig: goRouterConfig,
// theme: themeData,
// );
// }
// }

import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:on_time_front/presentation/preparation/screens/schedule_list_screen.dart';
import 'package:on_time_front/core/di/di_setup.dart';
import 'package:on_time_front/presentation/shared/router/go_router.dart';
import 'package:on_time_front/presentation/shared/theme/theme.dart';

void main() async {
runApp(const ProviderScope(child: MyApp()));
configureDependencies();
runApp(MyApp());
WidgetsFlutterBinding.ensureInitialized();
}

Expand All @@ -36,12 +14,34 @@ class MyApp extends StatelessWidget {

@override
Widget build(BuildContext context) {
return MaterialApp(
return MaterialApp.router(
routerConfig: goRouterConfig,
theme: themeData,
home: Scaffold(
backgroundColor: Colors.grey,
body: ScheduleListScreen(),
),
);
}
}

// import 'package:flutter/material.dart';
// import 'package:flutter_riverpod/flutter_riverpod.dart';
// import 'package:on_time_front/presentation/preparation/screens/schedule_list_screen.dart';
// import 'package:on_time_front/presentation/shared/theme/theme.dart';

// void main() async {
// runApp(const ProviderScope(child: MyApp()));
// WidgetsFlutterBinding.ensureInitialized();
// }

// class MyApp extends StatelessWidget {
// const MyApp({super.key});

// @override
// Widget build(BuildContext context) {
// return MaterialApp(
// theme: themeData,
// home: Scaffold(
// backgroundColor: Colors.grey,
// body: ScheduleListScreen(),
// ),
// );
// }
// }
56 changes: 43 additions & 13 deletions lib/presentation/login/components/google_login_button.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:google_sign_in/google_sign_in.dart';
import 'package:http/http.dart' as http;
import 'package:on_time_front/presentation/login/screens/test_screen.dart';
import 'package:on_time_front/presentation/home/screens/home_screen.dart';
import 'package:on_time_front/presentation/onboarding/onboarding_screen.dart';

import 'package:on_time_front/utils/login_platform.dart';

class GoogleLoginButton extends StatefulWidget {
Expand Down Expand Up @@ -44,6 +46,16 @@ class _GoogleLoginButtonState extends State<GoogleLoginButton> {
final userInfo = json.decode(userInfoResponse.body);
print("사용자 정보 가져오기 성공: $userInfo");

final formattedUserInfo = {
"sub": userInfo["sub"], // 고유 ID
"name": userInfo["name"],
"given_name": userInfo["given_name"],
"family_name": userInfo["family_name"],
"picture": userInfo["picture"],
"email": userInfo["email"],
"email_verified": userInfo["email_verified"]
};

// userInfo와 accessToken을 모두 헤더로 전달
final backendResponse = await http.post(
// 백엔드 URI
Expand All @@ -52,22 +64,40 @@ class _GoogleLoginButtonState extends State<GoogleLoginButton> {
headers: {
'Content-Type': 'application/json', // JSON 형식으로 전달
},
body: json.encode(userInfo), // userInfo를 body로 전달
body: json.encode(formattedUserInfo), // userInfo를 body로 전달
);

if (backendResponse.statusCode == 200) {
print("백엔드 처리 성공: ${backendResponse.headers}");

// TestScreen으로 이동
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
const TestScreen(loginPlatform: LoginPlatform.google),
),
);
// ✅ responseBody에서 message, role을 가져오도록 수정
final responseBody = json.decode(backendResponse.body);
final String? message = responseBody['message'];
final String? role = responseBody['role'];

print("백엔드 처리 성공: $message, Role: $role");

if (role == "GUEST") {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => OnboardingScreen(),
),
);
} else if (role == "USER") {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => HomeScreen(),
),
);
}

final String? backendToken =
backendResponse.headers['Authorization'];
if (backendToken != null) {
print("백엔드 토큰 저장: $backendToken");
}
} else {
print("Status error: ${backendResponse.statusCode}");
print("Backend error: ${backendResponse.statusCode}");
}
} else {
print("User info request failed: ${userInfoResponse.statusCode}");
Expand Down
107 changes: 0 additions & 107 deletions lib/presentation/login/components/google_login_mobile.dart

This file was deleted.

47 changes: 32 additions & 15 deletions lib/presentation/login/components/kakao_login_button.dart
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import 'dart:convert'; // For json.decode
import 'dart:io'; // For HttpHeaders and Platform
import 'dart:convert';
import 'dart:io';
import 'package:flutter/foundation.dart' show kIsWeb;
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http; // For HTTP requests
import 'package:http/http.dart' as http;
import 'package:kakao_flutter_sdk_user/kakao_flutter_sdk_user.dart';
import 'package:on_time_front/presentation/login/screens/test_screen.dart';
import 'package:on_time_front/presentation/home/screens/home_screen.dart';
import 'package:on_time_front/presentation/onboarding/onboarding_screen.dart';
import 'package:on_time_front/utils/login_platform.dart';

class KakaoLoginButton extends StatefulWidget {
Expand Down Expand Up @@ -57,7 +58,6 @@ class _KakaoLoginButtonState extends State<KakaoLoginButton> {
);

if (response.statusCode == 200) {
print("success");
final rawProfileInfo = json.decode(response.body);

// userInfo에서 필요한 데이터만 추출
Expand All @@ -82,23 +82,40 @@ class _KakaoLoginButtonState extends State<KakaoLoginButton> {
// 백엔드 URI
Uri.parse('http://ejun.kro.kr:8888/oauth2/kakao/registerOrLogin'),
headers: {
'Authorization': 'Bearer ${token.accessToken}',
'Content-Type': 'application/json',
},
body: json.encode(filteredProfileInfo),
);

if (backendResponse.statusCode == 200) {
print("백엔드 처리 성공: ${backendResponse.headers}");

// TestScreen으로 이동
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => TestScreen(
loginPlatform: LoginPlatform.kakao,
final responseBody = json.decode(backendResponse.body);
final String? message = responseBody['message'];
final String? role = responseBody['role'];

print(
"백엔드 처리 성공: $message, Role: $role, Response Body: $responseBody");

if (role == "GUEST") {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => OnboardingScreen(),
),
),
);
);
} else if (role == "USER") {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => HomeScreen(),
),
);
}

setState(() {
_loginPlatform = LoginPlatform.kakao;
_userProfile = filteredProfileInfo;
});
} else {
print("Backend error: ${backendResponse.statusCode}");
}
Expand Down
Loading

0 comments on commit 8020e12

Please sign in to comment.