Skip to content

[HIGH/Tracking] Repository-Bypass: 20+ Stellen umgehen das Repository-Pattern #219

Description

@Lionhunt3r

Cluster: Repository-Bypass — größtes Architektur-Problem

20+ Stellen im Code umgehen das Repository-Pattern und greifen direkt via ref.read(supabaseClientProvider) auf Supabase zu.

Stellen (alle HOCH)

Datei Beschreibung
attendance_detail_page.dart (B2-020) 11 direkte Calls — notes, deadline, share_plan, checklist, songs, conductors, img
person_detail_page.dart (B3-019/020) _saveChanges, _updateUserRole, _unlinkAccount
members_providers.dart (B3-028) instruments + player Tabellen direkt
copy_to_tenant_sheet.dart (B4-011) targetGroups + songs insert
parents_providers.dart (B5-024/033/034) parentChildrenProvider, childrenAttendancesProvider, force-unwrap auf tenant.id!
upcoming_songs_provider.dart (B5-014) Multiple direkte Queries
self_service_providers.dart (B5-013) currentSelfServicePlayerProvider
planning_page.dart (B6-006/007) _savePlan, _toggleSharePlan + force-unwrap
history_page.dart (B6-020) _addEntries, _deleteEntry
general_settings_page.dart (B7-021) _saveSettings
profile_page.dart (B7-P002) _loadProfile, _saveProfile
user_management_page.dart (B7-U003) tenantUsersProvider, _addUser, _changeRole
copy_shift_to_tenant_sheet.dart (B8-018) Cross-Tenant Insert ohne Repository
handover_sheet.dart (B10-013) _loadTargetGroups, _getUserRoleInTenant
voice_leader_providers.dart (B10-019/020) Queries ohne tenantId-Filter (Defense-in-Depth fehlt)

Lösung

  1. Alle 20 Stellen migrieren auf entsprechende XxxRepositoryWithTenantProvider
  2. Lint-Regel ergänzen: ref.read(supabaseClientProvider) außerhalb von lib/data/repositories/ als Error
  3. Force-Unwrap auf tenant.id! durch hasTenantId-Pattern ersetzen

Sprint

Sprint 2 (Repository-Bypass-Refactoring) — 4 Tage, ~30h Gesamt-Effort.

Hinweis

Dies ist als "HOCH" eingestuft, aber wegen der Verbreitung und der Sicherheits-Implikationen (Tenant-Isolation hängt davon ab, dass Server + UI konsistent filtern) ist es eines der wichtigsten Architektur-Themen. Daher hier als Tracking-Issue mit priority: critical markiert für Sichtbarkeit.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingmigration-backlogItem from Ionic→Flutter migration backlogpriority: highHigh prioritysecuritySecurity vulnerability

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions