Controller/Adminhtml/Ajax/AbstractAjax.php (38 lines of code) (raw):

<?php /** * Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved */ namespace Facebook\BusinessExtension\Controller\Adminhtml\Ajax; use Magento\Security\Model\AdminSessionsManager; abstract class AbstractAjax extends \Magento\Backend\App\Action { /** * @var \Magento\Framework\Controller\Result\JsonFactory */ protected $_resultJsonFactory; protected $_fbeHelper; public function __construct( \Magento\Backend\App\Action\Context $context, \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory, \Facebook\BusinessExtension\Helper\FBEHelper $fbeHelper ) { parent::__construct($context); $this->_resultJsonFactory = $resultJsonFactory; $this->_fbeHelper = $fbeHelper; } abstract protected function executeForJson(); public function execute() { $result = $this->_resultJsonFactory->create(); // TODO : Move all String objects to constants. $admin_session = $this->_fbeHelper ->createObject(AdminSessionsManager::class) ->getCurrentSession(); if (!$admin_session && $admin_session->getStatus() != 1) { throw new \Exception('Oops, this endpoint is for logged in admin and ajax only!'); } else { try { $json = $this->executeForJson(); return $result->setData($json); } catch (\Exception $e) { // Uncomment once the logger is added // $this->_fbeHelper->logException($e); throw new Exception( 'Oops, there was error while processing your request.' . ' Please contact admin for more details.' ); } } } }