20-02-2026
This commit is contained in:
parent
854ce02bf6
commit
4d6b4930b2
128 changed files with 18247 additions and 2093 deletions
73
app/Policies/ProductPolicy.php
Normal file
73
app/Policies/ProductPolicy.php
Normal 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');
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue