Analyse der beiden ~40/160-Zeilen-save()-Methoden (users/create vs edit): sie teilen nur den User-Attribut-Payload und den byte-identischen Firmen-Sync-Loop (Bearbeiten hat zusaetzlich Profil/Kontakte/volle Billing-CRUD). Ein voller UserUpsertService waere Over-Engineering (ueberwiegend Branches) — daher nur der wirklich gemeinsame Persistenz-Kern: User::syncCompaniesWithRoles(array $companyIds, array $roles) baut das Pivot-Payload (fehlende Rolle => 'member') und synct. Beide Formulare nutzen es; im Bearbeiten kommen die linkedCompanyIds nun direkt aus $validated. Test: UserSyncCompaniesTest (Rollen-Zuordnung, member-Default, Detach). 29 User-Tests gruen. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| categories | ||
| companies | ||
| contacts | ||
| coupons | ||
| footer-codes | ||
| invoices | ||
| legal-requests | ||
| newsletter | ||
| payments | ||
| presets | ||
| press-releases | ||
| reports | ||
| roles | ||
| users | ||
| portal-switcher.blade.php | ||
| users.blade.php | ||