20-02-2026

This commit is contained in:
Kevin Adametz 2026-02-20 17:57:50 +01:00
parent 854ce02bf6
commit 4d6b4930b2
128 changed files with 18247 additions and 2093 deletions

View file

@ -0,0 +1,73 @@
<?php
namespace App\Policies;
use App\Models\Product;
use App\Models\User;
class ProductPolicy
{
/**
* Admins, Retailer und Manufacturer können Produkte sehen.
*/
public function viewAny(User $user): bool
{
return $user->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');
}
}