* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 */ use PrestaShop\Module\PsAccounts\Account\Session\ShopSession; use PrestaShop\Module\PsAccounts\Api\Controller\AbstractShopRestController; use PrestaShop\Module\PsAccounts\Api\Controller\Request\UpdateShopOauth2ClientRequest; use PrestaShop\Module\PsAccounts\Exception\RefreshTokenException; use PrestaShop\Module\PsAccounts\Provider\OAuth2\Oauth2Client; class ps_AccountsApiV1ShopOauth2ClientModuleFrontController extends AbstractShopRestController { /** * @var Oauth2Client */ private $oauth2Client; /** * @var ShopSession */ private $session; /** * ps_AccountsApiV1ShopOauth2ClientModuleFrontController constructor. * * @throws Exception */ public function __construct() { parent::__construct(); $this->oauth2Client = $this->module->getService(Oauth2Client::class); $this->session = $this->module->getService(ShopSession::class); } /** * @param Shop $shop * @param UpdateShopOauth2ClientRequest $request * * @return array */ public function update(Shop $shop, UpdateShopOauth2ClientRequest $request) { $this->oauth2Client->update($request->client_id, $request->client_secret); try { $this->session->getValidToken(); } catch (RefreshTokenException $e) { return [ 'error' => true, 'message' => 'Could not retrieve a valid token', ]; } return [ 'success' => true, 'message' => 'Oauth client stored successfully', ]; } /** * @param Shop $shop * @param array $payload * * @return array * * @throws Exception */ public function delete(Shop $shop, array $payload) { $this->oauth2Client->delete(); return [ 'success' => true, 'message' => 'Oauth client deleted successfully', ]; } }