From 0a887e8884dabe12fdb4ff0bf460af5d095e08fc Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Wed, 26 Aug 2026 12:59:12 +0200 Subject: [PATCH] feat: prevent future object access issues in SameProjectRewardChargeValidator --- src/Validator/SameProjectRewardChargeValidator.php | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/Validator/SameProjectRewardChargeValidator.php b/src/Validator/SameProjectRewardChargeValidator.php index 6d933df..62f722a 100644 --- a/src/Validator/SameProjectRewardChargeValidator.php +++ b/src/Validator/SameProjectRewardChargeValidator.php @@ -3,23 +3,31 @@ namespace App\Validator; use App\ApiResource\Project\RewardClaimApiResource; +use App\Entity\Accounting\Accounting; use App\Entity\Project\Project; +use App\Mapping\AutoMapper; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; final class SameProjectRewardChargeValidator extends ConstraintValidator { + public function __construct( + private AutoMapper $mapper, + ) {} + /** * @param RewardClaimApiResource $value */ public function validate(mixed $value, Constraint $constraint): void { - $charge = $value->charge; $reward = $value->reward; + /** @var Accounting */ + $target = $this->mapper->map($value->charge->target, Accounting::class); + if ( - $charge->target->ownerObject instanceof Project - && $charge->target->ownerObject?->getId() === $reward->project->id + $target->getProject() instanceof Project + && $target->getProject()->getId() === $reward->project->id ) { return; }