. */ namespace SP\Modules\Web\Controllers\User; use SP\Core\Application; use SP\DataModel\UserData; use SP\Domain\CustomField\Ports\CustomFieldServiceInterface; use SP\Domain\Notification\Ports\MailServiceInterface; use SP\Domain\User\Ports\UserPassRecoverServiceInterface; use SP\Domain\User\Ports\UserServiceInterface; use SP\Domain\User\Services\UserPassRecoverService; use SP\Modules\Web\Controllers\ControllerBase; use SP\Modules\Web\Forms\UserForm; use SP\Mvc\Controller\WebControllerHelper; /** * Class UserSaveBase */ abstract class UserSaveBase extends ControllerBase { protected UserServiceInterface $userService; protected CustomFieldServiceInterface $customFieldService; protected UserForm $form; private MailServiceInterface $mailService; private UserPassRecoverServiceInterface $userPassRecoverService; public function __construct( Application $application, WebControllerHelper $webControllerHelper, UserServiceInterface $userService, CustomFieldServiceInterface $customFieldService, MailServiceInterface $mailService, UserPassRecoverServiceInterface $userPassRecoverService ) { parent::__construct($application, $webControllerHelper); $this->checkLoggedIn(); $this->userService = $userService; $this->customFieldService = $customFieldService; $this->mailService = $mailService; $this->userPassRecoverService = $userPassRecoverService; $this->form = new UserForm($application, $this->request); } /** * @param int $userId * @param UserData $userData * * @throws \Defuse\Crypto\Exception\EnvironmentIsBrokenException * @throws \PHPMailer\PHPMailer\Exception * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException * @throws \SP\Domain\Common\Services\ServiceException */ final protected function checkChangeUserPass(int $userId, UserData $userData): void { if ($userData->isChangePass()) { $hash = $this->userPassRecoverService->requestForUserId($userId); $this->mailService->send( __('Password Change'), $userData->getEmail(), UserPassRecoverService::getMailMessage($hash) ); } } }