oke
This commit is contained in:
parent
6bdf5466fd
commit
a31c3c001f
|
|
@ -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,
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -23,4 +23,4 @@ dev_dependencies:
|
|||
flutter_lints: ^3.0.0
|
||||
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
uses-material-design: true
|
||||
|
|
|
|||
12
pubspec.lock
12
pubspec.lock
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue