feat: Implement Google Sign-In functionality and update user profile management

This commit is contained in:
Dayron
2025-10-07 08:25:21 +02:00
parent ec0bc59a70
commit 563ba05f74
7 changed files with 163 additions and 8 deletions

View File

@@ -67,6 +67,57 @@ class _LoginPageState extends State<LoginPage> {
}
}
Future<void> _signInWithGoogle() async {
setState(() {
_isLoading = true;
});
try {
final userCredential = await _authService.signInWithGoogle();
if (mounted && userCredential.user != null) {
final user = userCredential.user!;
final userProvider = Provider.of<UserProvider>(context, listen: false);
// Récupérer les données utilisateur depuis Firestore
final userData = await userProvider.getUserData(user.uid);
if (userData != null) {
// L'utilisateur existe déjà
userProvider.setCurrentUser(userData);
Navigator.pushReplacementNamed(context, '/home');
} else {
// L'utilisateur n'existe pas, créer son profil
final newUserData = {
'uid': user.uid,
'email': user.email ?? '',
'name': user.displayName ?? 'Utilisateur',
};
// Créer le profil utilisateur dans Firestore
final createdUser = await userProvider.createUser(newUserData);
if (createdUser != null) {
userProvider.setCurrentUser(createdUser);
Navigator.pushReplacementNamed(context, '/home');
} else {
_showErrorMessage('Erreur lors de la création du profil utilisateur');
}
}
}
} catch (e) {
if (mounted) {
_showErrorMessage('Erreur lors de la connexion avec Google: ${e.toString()}');
}
} finally {
if (mounted) {
setState(() {
_isLoading = false;
});
}
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
@@ -215,12 +266,7 @@ class _LoginPageState extends State<LoginPage> {
children: [
// GOOGLE
GestureDetector(
onTap: () {
// TODO: Implémenter la connexion Google
_showErrorMessage(
'Connexion Google non implémentée',
);
},
onTap: _isLoading ? null : _signInWithGoogle,
child: Container(
width: 50,
height: 50,