This commit is contained in:
kleponijo 2026-04-20 21:45:05 +07:00
parent 6bdf5466fd
commit a31c3c001f
5 changed files with 79 additions and 22 deletions

View File

@ -3,6 +3,7 @@ import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:rxdart/rxdart.dart';
import 'package:user_repository/user_repository.dart';
import 'package:google_sign_in/google_sign_in.dart';
class FirebaseUserRepo implements UserRepository {
final FirebaseAuth _firebaseAuth;
@ -93,21 +94,29 @@ class FirebaseUserRepo implements UserRepository {
@override
Future<void> signInWithGoogle() async {
try {
final GoogleAuthProvider googleProvider = GoogleAuthProvider();
final UserCredential userCredential =
await _firebaseAuth.signInWithPopup(googleProvider);
final account = await GoogleSignIn.instance.authenticate(
serverClientId: "1234567890-abcxyz.apps.googleusercontent.com",
);
final User? firebaseUser = userCredential.user;
if (firebaseUser != null) {
// Check if user data already exists in Firestore
final existingUser = await userCollection.doc(firebaseUser.uid).get();
final auth = await account.authentication;
final credential = GoogleAuthProvider.credential(
idToken: auth.idToken,
);
final userCredential =
await _firebaseAuth.signInWithCredential(credential);
final user = userCredential.user;
if (user != null) {
final existingUser = await userCollection.doc(user.uid).get();
if (!existingUser.exists) {
// Create new user data from Google account info
final newUser = MyUser(
userId: firebaseUser.uid,
email: firebaseUser.email ?? '',
name: firebaseUser.displayName ?? 'User',
userId: user.uid,
email: user.email ?? '',
name: user.displayName ?? 'User',
hasActiveCart: false,
);

View File

@ -152,6 +152,54 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
google_identity_services_web:
dependency: transitive
description:
name: google_identity_services_web
sha256: "5d187c46dc59e02646e10fe82665fc3884a9b71bc1c90c2b8b749316d33ee454"
url: "https://pub.dev"
source: hosted
version: "0.3.3+1"
google_sign_in:
dependency: "direct main"
description:
name: google_sign_in
sha256: "521031b65853b4409b8213c0387d57edaad7e2a949ce6dea0d8b2afc9cb29763"
url: "https://pub.dev"
source: hosted
version: "7.2.0"
google_sign_in_android:
dependency: transitive
description:
name: google_sign_in_android
sha256: be0d0733a6a7c5da165879d844a239aa87587a3c767a9163faedde581f731f76
url: "https://pub.dev"
source: hosted
version: "7.2.10"
google_sign_in_ios:
dependency: transitive
description:
name: google_sign_in_ios
sha256: ac1e4c1205267cb7999d1d81333fccffdfda29e853f434bbaf71525498bb6950
url: "https://pub.dev"
source: hosted
version: "6.3.0"
google_sign_in_platform_interface:
dependency: transitive
description:
name: google_sign_in_platform_interface
sha256: "7f59208c42b415a3cca203571128d6f84f885fead2d5b53eb65a9e27f2965bb5"
url: "https://pub.dev"
source: hosted
version: "3.1.0"
google_sign_in_web:
dependency: transitive
description:
name: google_sign_in_web
sha256: d473003eeca892f96a01a64fc803378be765071cb0c265ee872c7f8683245d14
url: "https://pub.dev"
source: hosted
version: "1.1.3"
http:
dependency: transitive
description:
@ -334,5 +382,5 @@ packages:
source: hosted
version: "1.1.1"
sdks:
dart: ">=3.8.0-0 <4.0.0"
flutter: ">=3.22.0"
dart: ">=3.10.0 <4.0.0"
flutter: ">=3.38.0"

View File

@ -9,7 +9,7 @@ environment:
dependencies:
flutter:
sdk: flutter
google_sign_in: ^7.1.1
# equatable: ^2.0.5
firebase_auth: ^6.1.3
cloud_firestore: ^6.1.1

View File

@ -300,18 +300,18 @@ packages:
dependency: transitive
description:
name: google_sign_in_android
sha256: "5ec98ab35387c68c0050495bb211bd88375873723a80fae7c2e9266ea0bdd8bb"
sha256: be0d0733a6a7c5da165879d844a239aa87587a3c767a9163faedde581f731f76
url: "https://pub.dev"
source: hosted
version: "7.2.7"
version: "7.2.10"
google_sign_in_ios:
dependency: transitive
description:
name: google_sign_in_ios
sha256: "234fc2830b55d1bbeb7e05662967691f5994143ff43dc70d3f139d1bbb3b8fb2"
sha256: ac1e4c1205267cb7999d1d81333fccffdfda29e853f434bbaf71525498bb6950
url: "https://pub.dev"
source: hosted
version: "6.2.5"
version: "6.3.0"
google_sign_in_platform_interface:
dependency: transitive
description:
@ -324,10 +324,10 @@ packages:
dependency: transitive
description:
name: google_sign_in_web
sha256: "2fc1f941e6443b2d6984f4056a727a3eaeab15d8ee99ba7125d79029be75a1da"
sha256: d473003eeca892f96a01a64fc803378be765071cb0c265ee872c7f8683245d14
url: "https://pub.dev"
source: hosted
version: "1.1.0"
version: "1.1.3"
hooks:
dependency: transitive
description:

View File

@ -18,7 +18,7 @@ dependencies:
sdk: flutter
flutter_bloc: ^8.1.0
google_fonts: ^8.0.2
google_sign_in: ^7.2.0
google_sign_in: ^7.1.1
intl: ^0.20.2
monitoring_repository:
path: packages/monitoring_repository