* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 */ use PrestaShop\Module\Mbo\Api\Controller\AbstractAdminApiController; use PrestaShop\Module\Mbo\Api\Exception\IncompleteSignatureParamsException; use PrestaShop\Module\Mbo\Api\Exception\QueryParamsException; use PrestaShop\Module\Mbo\Api\Service\Factory as ExcutorsFactory; use PrestaShop\Module\Mbo\Helpers\ErrorHelper; /** * This controller is responsible to execute actions on modules installed on the current shop. * Caller have to be fully authenticated to perform actions given. */ class apiPsMboController extends AbstractAdminApiController { /** * @return void */ public function postProcess() { $response = null; try { $service = Tools::getValue('service'); if (empty($service)) { throw new QueryParamsException('[service] parameter is required'); } /** @var ExcutorsFactory $executorsFactory */ $executorsFactory = $this->module->get('mbo.api.service.factory'); $response = $executorsFactory->build($service)->execute($this->module); } catch (\Exception $exception) { ErrorHelper::reportError($exception); $this->exitWithExceptionMessage($exception); } $this->exitWithResponse($response); } /** * {@inheritdoc} */ protected function buildSignatureMessage(): string { // Payload elements $action = Tools::getValue('action', ''); $module = Tools::getValue('module', ''); $adminToken = Tools::getValue('admin_token', ''); $actionUuid = Tools::getValue('action_uuid'); if ( !$action || !$module || !$adminToken || !$actionUuid ) { throw new IncompleteSignatureParamsException('Expected signature elements are not given'); } $keyVersion = Tools::getValue('version'); return json_encode([ 'action' => $action, 'module' => $module, 'admin_token' => $adminToken, 'action_uuid' => $actionUuid, 'version' => $keyVersion, ]); } }