(Feat) Add google

This commit is contained in:
2026-07-18 13:11:03 +02:00
parent 01a0f1029f
commit 8dd5873f25
20 changed files with 596 additions and 379 deletions
+43
View File
@@ -0,0 +1,43 @@
import 'package:pocketbase/pocketbase.dart';
import 'package:shared_preferences/shared_preferences.dart';
/// Configuration de connexion au backend PocketBase (LE MÊME que l'app magasin).
///
/// L'URL pointe vers l'instance PocketBase auto-hébergée. La session (token
/// d'auth) est persistée localement via [SharedPreferences] pour rester
/// connecté entre deux lancements de l'app.
class PbConfig {
PbConfig._();
static const String url = 'https://db.tailb756e1.ts.net';
static bool get estConfigure => !url.contains('VOTRE-URL');
}
/// ID client OAuth « Web » du projet Google Cloud. Passé à google_sign_in comme
/// `serverClientId` → l'ID token renvoyé a cette audience, que le hook serveur
/// PocketBase (`/api/google-native-auth`) vérifie.
const String googleWebClientId =
'831733439319-45cergb7cf8r728fja4m0kcvu2r7fbj9.apps.googleusercontent.com';
/// Client PocketBase global (initialisé une fois via [initPocketBase]).
late final PocketBase pb;
/// Initialise le client PocketBase avec une auth store persistée sur disque.
/// À appeler au démarrage, avant `runApp`.
Future<void> initPocketBase() async {
final prefs = await SharedPreferences.getInstance();
final store = AsyncAuthStore(
save: (String data) async => prefs.setString('pb_auth', data),
clear: () async => prefs.remove('pb_auth'),
initial: prefs.getString('pb_auth'),
);
pb = PocketBase(PbConfig.url, authStore: store);
}
/// Extrait un message lisible d'une erreur PocketBase (sinon [parDefaut]).
String messageErreurPb(ClientException e, String parDefaut) {
final data = e.response['message'];
if (data is String && data.trim().isNotEmpty) return data;
return parDefaut;
}