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(); } }