*/ class GenerateAndSendPassword implements ServiceAction { private InjectableFactory $injectableFactory; private ServiceContainer $serviceContainer; public function __construct( InjectableFactory $injectableFactory, ServiceContainer $serviceContainer ) { $this->injectableFactory = $injectableFactory; $this->serviceContainer = $serviceContainer; } /** * @inheritDoc * @noinspection PhpHierarchyChecksInspection * @noinspection PhpUndefinedClassInspection * @noinspection PhpSignatureMismatchDuringInheritanceInspection */ public function run(Entity $entity, mixed $data): mixed { if (class_exists("Espo\\Tools\\UserSecurity\\Password\\Service")) { /** @var Service $service */ $service = $this->injectableFactory->create("Espo\\Tools\\UserSecurity\\Password\\Service"); // @todo Support non-admin users. $service->generateAndSendNewPasswordForUser($entity->getId()); return null; } $service = $this->serviceContainer->get(User::ENTITY_TYPE); if (method_exists($service, 'generateNewPasswordForUser')) { $service->generateNewPasswordForUser($entity->getId(), true); } return null; } }