Files
mesreleves-php/app/Policies/RelevePolicy.php
T
yann64 4a5ff3e1a5 Fix RelevePolicy : signature create/viewAny incompatible avec le Gate Laravel
authorize('create', [Releve::class, $source]) injecte une instance Releve
comme 2e argument avant $source — la policy recevait un Releve là où elle
attendait un Source (TypeError). Ajout du paramètre Releve $releve manquant
dans viewAny() et create() ; update() adapté en conséquence.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 19:18:23 +02:00

43 lines
1.0 KiB
PHP

<?php
namespace App\Policies;
use App\Enums\SourceStatus;
use App\Models\Releve;
use App\Models\Source;
use App\Models\User;
class RelevePolicy
{
public function viewAny(User $user, Releve $releve, Source $source): bool
{
return $source->isVisibleBy($user);
}
public function view(User $user, Releve $releve): bool
{
return $releve->source->isVisibleBy($user);
}
public function create(User $user, Releve $releve, Source $source): bool
{
if ($source->status === SourceStatus::Termine) {
return false;
}
if ($user->isAdmin() || $user->isSectionManager()) {
return true;
}
return $source->membres()->where('user_id', $user->id)->exists();
}
public function update(User $user, Releve $releve): bool
{
return $this->create($user, $releve, $releve->source);
}
public function delete(User $user, Releve $releve): bool
{
return $user->isAdmin() || $user->isSectionManager();
}
}