Files
yann64 5feceb0882 Fix RelevePolicy : harmoniser les signatures avec les appels du Gate
Le Gate Laravel se comporte différemment selon que le 1er argument est
une classe string ou une instance :
- [Releve::class, $source] → Gate passe $source directement (vue + contrôleurs)
- [app(Releve::class), $source] → Gate injecte l'instance + $source (ancien StoreReleveRequest)

Correction : revenir aux signatures originales (User, Source) et remplacer
app(Releve::class) par Releve::class dans StoreReleveRequest pour uniformiser.

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

43 lines
994 B
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, 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, 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->source);
}
public function delete(User $user, Releve $releve): bool
{
return $user->isAdmin() || $user->isSectionManager();
}
}