leafittome/lib/features/household/domain/household.dart
cschlaefke 1b2c880c89 V2: Haushalt teilen – Einladungscodes, Mitglieder- und Sitter-Rolle, sichtbare Bestätigungen
- Einladen per einmaligem 6-stelligem Code (7 Tage gültig), wahlweise als Mitglied oder Pflanzen-Sitter
- Beitritt über Cloud Function joinHousehold (Transaktion, Admin-Rechte)
- Security Rules: Sitter dürfen an Pflanzen nur Bestätigungs-Felder ändern; invites nur erstellen, nie lesen
- Haushalts-Screen: Mitgliederliste mit Rollen, Einladen, Beitreten mit Wechsel-Warnung
- UI-Gating: Sitter sehen keine Anlegen-/Bearbeiten-/Löschen-Aktionen
- Bestätigungen speichern den Namen (lastWateredBy/lastFertilizedBy), Anzeige im Profil
- Tests: Members-Map im Seed, neuer Sitter-Test

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 19:14:34 +02:00

42 lines
985 B
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'package:flutter/foundation.dart';
/// Rolle eines Haushalts-Mitglieds.
///
/// member = volle Rechte; sitter = Pflanzen-Sitter, darf Pläne sehen und
/// Aufgaben bestätigen, aber nichts anlegen, ändern oder löschen.
/// Die Durchsetzung passiert serverseitig in den Security Rules
/// die UI blendet entsprechende Aktionen zusätzlich aus.
enum HouseholdRole { member, sitter }
@immutable
class HouseholdMember {
const HouseholdMember({
required this.uid,
required this.role,
required this.email,
});
final String uid;
final HouseholdRole role;
final String email;
}
@immutable
class Household {
const Household({
required this.id,
required this.name,
required this.members,
});
final String id;
final String name;
final List<HouseholdMember> members;
HouseholdRole roleOf(String uid) {
for (final member in members) {
if (member.uid == uid) return member.role;
}
return HouseholdRole.member;
}
}