b2in/app/Policies/PartnerPolicy.php
2026-02-20 17:57:50 +01:00

67 lines
1.6 KiB
PHP

<?php
namespace App\Policies;
use App\Models\Partner;
use App\Models\User;
class PartnerPolicy
{
/**
* Admins und Super-Admins können alle Partner sehen.
* Partner können nur ihren eigenen Eintrag sehen.
*/
public function viewAny(User $user): bool
{
return $user->hasAnyRole(['Admin', 'Super-Admin']);
}
/**
* Admins sehen alle Partner; Partner sehen ihren eigenen Eintrag.
*/
public function view(User $user, Partner $partner): bool
{
if ($user->hasAnyRole(['Admin', 'Super-Admin'])) {
return true;
}
return $user->partner_id === $partner->id;
}
/**
* Nur Admins können neue Partner direkt anlegen (normale Partner werden eingeladen).
*/
public function create(User $user): bool
{
return $user->hasAnyRole(['Admin', 'Super-Admin']);
}
/**
* Admins können jeden Partner bearbeiten.
* Partner können ihr eigenes Profil bearbeiten.
*/
public function update(User $user, Partner $partner): bool
{
if ($user->hasAnyRole(['Admin', 'Super-Admin'])) {
return true;
}
return $user->partner_id === $partner->id;
}
/**
* Nur Admins können Partner löschen.
*/
public function delete(User $user, Partner $partner): bool
{
return $user->hasAnyRole(['Admin', 'Super-Admin']);
}
/**
* Produkte eines Partners kuratieren (freigeben/ablehnen).
*/
public function curateProducts(User $user): bool
{
return $user->hasPermissionTo('curate products');
}
}