. */ namespace SP\Modules\Api\Controllers\Account; use Exception; use SP\Core\Acl\ActionsInterface; use SP\Core\Crypt\Crypt; use SP\Core\Events\Event; use SP\Core\Events\EventMessage; use SP\Domain\Api\Services\ApiResponse; /** * Class ViewController */ final class ViewPassController extends AccountBase { /** * viewPassAction */ public function viewPassAction(): void { try { $this->setupApi(ActionsInterface::ACCOUNT_VIEW_PASS); $id = $this->apiService->getParamInt('id', true); $accountPassData = $this->accountService->getPasswordForId($id); $password = Crypt::decrypt( $accountPassData->getPass(), $accountPassData->getKey(), $this->apiService->getMasterPass() ); $this->accountService->incrementDecryptCounter($id); $accountDetails = $this->accountService->getByIdEnriched($id)->getAccountVData(); $this->eventDispatcher->notify( 'show.account.pass', new Event( $this, EventMessage::factory() ->addDescription(__u('Password viewed')) ->addDetail(__u('Name'), $accountDetails->getName()) ->addDetail(__u('Client'), $accountDetails->getClientName()) ->addDetail('ID', $id) ) ); $this->returnResponse(ApiResponse::makeSuccess(["password" => $password], $id)); } catch (Exception $e) { processException($e); $this->returnResponseException($e); } } }