diff --git a/src/Plugin/SmsGateway/Twilio.php b/src/Plugin/SmsGateway/Twilio.php index d1ad87f..a248fa9 100644 --- a/src/Plugin/SmsGateway/Twilio.php +++ b/src/Plugin/SmsGateway/Twilio.php @@ -3,6 +3,7 @@ namespace Drupal\sms_twilio\Plugin\SmsGateway; use Drupal\Core\Form\FormStateInterface; +use Drupal\Core\Logger\LoggerChannel; use Drupal\sms\Direction; use Drupal\sms\Entity\SmsGatewayInterface; use Drupal\sms\Message\SmsDeliveryReport; @@ -179,7 +180,10 @@ protected function buildIncomingFromRequest(Request $request) { if ($files = TwilioMedia::processMedia($params)) { $sms->setOption('media', $files); } - if(!TwilioValidation::validateIncoming($request, $this)) { + try { + TwilioValidation::validateIncoming($request, $this); + } + catch (\Exception $e) { $report->setStatus(SmsMessageReportStatus::REJECTED); $report->setStatusMessage($e->getMessage()); $result->setError($e->getCode()); @@ -187,6 +191,7 @@ protected function buildIncomingFromRequest(Request $request) { } $result->addReport($report); $sms->setResult($result); + return $sms; } @@ -209,6 +214,7 @@ public function processIncoming(Request $request, SmsGatewayInterface $sms_gatew } $task->setMessages([$sms]); $task->setResponse($response); + return $task; } diff --git a/src/Utility/TwilioValidation.php b/src/Utility/TwilioValidation.php index 964e1f5..47f651e 100644 --- a/src/Utility/TwilioValidation.php +++ b/src/Utility/TwilioValidation.php @@ -5,6 +5,7 @@ use Drupal\Core\Url; use Drupal\sms\Plugin\SmsGatewayPluginInterface; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; use Twilio\Security\RequestValidator; /** @@ -33,8 +34,13 @@ public static function validateIncoming(Request $request, SmsGatewayPluginInterf $token = $sms_gateway->getConfiguration()['auth_token']; $validator = new RequestValidator($token); + $valid = $validator->validate($signature, $url, $request->request->all()); - return $validator->validate($signature, $url, $request->request->all()); + if (!$valid) { + throw new AccessDeniedHttpException('Signature validation failed.'); + } + + return $valid; } }