*/ final readonly class UserPasswordHasherProcessor implements ProcessorInterface { /** * @param ProcessorInterface $persistProcessor */ public function __construct( #[Autowire(service: 'api_platform.doctrine.orm.state.persist_processor')] private ProcessorInterface $persistProcessor, private UserPasswordHasherInterface $passwordHasher, ) {} /** * @param User $data */ public function process(mixed $data, Operation $operation, array $uriVariables = [], array $context = []): mixed { $plainPassword = $data->getPlainPassword(); if (null !== $plainPassword && '' !== $plainPassword) { $data->setPassword($this->passwordHasher->hashPassword($data, $plainPassword)); $data->setPlainPassword(null); } return $this->persistProcessor->process($data, $operation, $uriVariables, $context); } }