*/ #[AsDecorator('api_platform.doctrine.orm.state.persist_processor')] final class ScenarioOwnerProcessor implements ProcessorInterface { /** * @param ProcessorInterface $decorated */ public function __construct( #[AutowireDecorated] private readonly ProcessorInterface $decorated, private readonly Security $security, ) { } public function process( mixed $data, Operation $operation, array $uriVariables = [], array $context = [], ): mixed { if ($data instanceof Scenario) { // The Scenario Post operation is gated by `is_granted('ROLE_USER')` // (see #[ApiResource] on App\Entity\Scenario), so by the time this // processor runs the security pipeline guarantees a logged-in User. $user = $this->security->getUser(); \assert($user instanceof User); $data->setOwner($user); } return $this->decorated->process($data, $operation, $uriVariables, $context); } }