hasAnyRole(['Admin', 'Super-Admin', 'Retailer', 'Manufacturer']); } /** * Admins sehen alle Produkte; Partner sehen nur ihre eigenen. */ public function view(User $user, Product $product): bool { if ($user->hasAnyRole(['Admin', 'Super-Admin'])) { return true; } return $product->partner_id === $user->partner_id; } /** * Retailer dürfen Teaser-Produkte (Typ A) anlegen. * Manufacturer dürfen Konfigurations-Produkte (Typ B) anlegen. * Admins dürfen beide Typen anlegen. */ public function create(User $user): bool { return $user->hasAnyRole(['Admin', 'Super-Admin', 'Retailer', 'Manufacturer']); } /** * Admins können alle Produkte bearbeiten. * Partner können nur ihre eigenen Produkte bearbeiten. */ public function update(User $user, Product $product): bool { if ($user->hasAnyRole(['Admin', 'Super-Admin'])) { return true; } return $product->partner_id === $user->partner_id; } /** * Admins können alle Produkte löschen. * Partner können nur ihre eigenen Produkte löschen. */ public function delete(User $user, Product $product): bool { if ($user->hasAnyRole(['Admin', 'Super-Admin'])) { return true; } return $product->partner_id === $user->partner_id; } /** * Nur Admins können Produkte kuratieren (freigeben/ablehnen). */ public function curate(User $user): bool { return $user->hasPermissionTo('curate products'); } }