4a5ff3e1a5
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>
43 lines
1.0 KiB
PHP
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();
|
|
}
|
|
}
|