Source of file WebhooksAdmin.php
Size: 2,183 Bytes - Last Modified: 2021-12-24T07:09:52+00:00
/var/www/docs.ssmods.com/process/src/src/Admins/WebhooksAdmin.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | <?php namespace SilverStripe\Headless\Admins; use SilverStripe\Admin\ModelAdmin; use SilverStripe\Control\HTTPRequest; use SilverStripe\Forms\GridField\GridField; use SilverStripe\Forms\GridField\GridFieldExportButton; use SilverStripe\Forms\GridField\GridFieldImportButton; use SilverStripe\Forms\GridField\GridFieldPrintButton; use SilverStripe\Headless\Model\IncomingWebhook; use SilverStripe\Headless\Model\OutgoingWebhook; use SilverStripe\Security\SecurityToken; class WebhooksAdmin extends ModelAdmin { /** * @var string */ private static $menu_title = 'Webhooks'; /** * @var string */ private static $url_segment = 'webhooks'; private static $menu_icon_class = 'font-icon-p-redirect'; private static $allowed_actions = [ 'invoke', ]; /** * @var array */ private static $managed_models = [ IncomingWebhook::class, OutgoingWebhook::class, ]; public function getGridField(): GridField { $grid = parent::getGridField(); $grid->getConfig()->removeComponentsByType(GridFieldImportButton::class); $grid->getConfig()->removeComponentsByType(GridFieldPrintButton::class); $grid->getConfig()->removeComponentsByType(GridFieldExportButton::class); return $grid; } public function invoke(HTTPRequest $request) { $id = $request->getVar('id'); $token = $request->getVar('token'); if (!SecurityToken::inst()->check($token)) { $this->httpError(403, 'Invalid token'); return; } $webhook = OutgoingWebhook::get()->byID($id); if (!$webhook) { return $this->redirectBack(); } $response = $webhook->invoke(); $code = $response->getStatusCode(); if($code >= 200 && $code < 300) { $this->getResponse()->addHeader('X-Status', 'Success!'); return $this->redirectBack(); } else { $this->getResponse()->addHeader('X-Status', 'Failed. Got error code ' . $code); $this->getResponse()->setStatusCode(500); return $this->redirectBack(); } } } |