import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:firebase_auth/firebase_auth.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../../core/firebase/firebase_providers.dart'; /// Anmeldung, Registrierung und der Haushalts-Bootstrap. class AuthRepository { AuthRepository(this._auth, this._firestore); final FirebaseAuth _auth; final FirebaseFirestore _firestore; Future signIn({required String email, required String password}) async { await _auth.signInWithEmailAndPassword(email: email, password: password); } /// Registrierung: legt Nutzer, persönliches Profil-Dokument und einen /// neuen Haushalt in einem Rutsch an. Der Nutzer ist automatisch Mitglied /// seines eigenen Haushalts (V2 fügt per Einladung weitere hinzu). Future signUp({required String email, required String password}) async { final credential = await _auth.createUserWithEmailAndPassword( email: email, password: password, ); final uid = credential.user!.uid; final householdRef = _firestore.collection('households').doc(); final userRef = _firestore.collection('users').doc(uid); final batch = _firestore.batch(); batch.set(householdRef, { 'name': 'Mein Haushalt', 'memberUids': [uid], 'createdAt': FieldValue.serverTimestamp(), }); batch.set(userRef, { 'email': email, 'householdId': householdRef.id, 'createdAt': FieldValue.serverTimestamp(), }); await batch.commit(); } Future signOut() => _auth.signOut(); } final authRepositoryProvider = Provider((ref) { return AuthRepository( ref.watch(firebaseAuthProvider), ref.watch(firestoreProvider), ); });