. */ namespace SP\Modules\Web\Controllers\Account; use SP\Core\Application; use SP\Core\Events\Event; use SP\Core\Events\EventMessage; use SP\Domain\Account\AccountServiceInterface; use SP\Modules\Web\Controllers\Helpers\Account\AccountPasswordHelper; use SP\Modules\Web\Controllers\Traits\JsonTrait; use SP\Mvc\Controller\WebControllerHelper; /** * Class CopyPassHistoryController */ final class CopyPassHistoryController extends AccountControllerBase { use JsonTrait; private AccountServiceInterface $accountService; private AccountPasswordHelper $accountPasswordHelper; public function __construct( Application $application, WebControllerHelper $webControllerHelper, AccountServiceInterface $accountService, AccountPasswordHelper $accountPasswordHelper ) { parent::__construct( $application, $webControllerHelper ); $this->accountService = $accountService; $this->accountPasswordHelper = $accountPasswordHelper; } /** * Copy account's password * * @param int $id Account's ID * * @return bool * @throws \Defuse\Crypto\Exception\BadFormatException * @throws \Defuse\Crypto\Exception\CryptoException * @throws \Defuse\Crypto\Exception\EnvironmentIsBrokenException * @throws \Defuse\Crypto\Exception\WrongKeyOrModifiedCiphertextException * @throws \JsonException * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException * @throws \SP\Modules\Web\Controllers\Helpers\HelperException * @throws \SP\Infrastructure\Common\Repositories\NoSuchItemException * @throws \SP\Domain\Common\Services\ServiceException */ public function copyPassHistoryAction(int $id): bool { $account = $this->accountService->getPasswordHistoryForId($id); $data = [ 'accpass' => $this->accountPasswordHelper->getPasswordClear($account), ]; $this->eventDispatcher->notifyEvent( 'copy.account.pass.history', new Event( $this, EventMessage::factory() ->addDescription(__u('Password copied')) ->addDetail(__u('Account'), $account->getName()) ) ); return $this->returnJsonResponseData($data); } }