WebhookController.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Services\WebhookService;
  4. use Illuminate\Http\JsonResponse;
  5. use Illuminate\Http\Request;
  6. class WebhookController extends Controller
  7. {
  8. public function __construct(
  9. private readonly WebhookService $webhookService,
  10. ) {}
  11. public function pagarme(Request $request): JsonResponse
  12. {
  13. if (! $this->validPagarmeCredentials($request)) {
  14. return $this->errorResponse(message: __('http.unauthorized_token'), code: 401);
  15. }
  16. $this->webhookService->handlePagarme($request->all());
  17. return $this->successResponse(message: __('http.webhook_received'));
  18. }
  19. //
  20. private function validPagarmeCredentials(Request $request): bool
  21. {
  22. $configuredUser = config('services.pagarme.webhook_user');
  23. $configuredPassword = config('services.pagarme.webhook_password');
  24. if (empty($configuredUser) || empty($configuredPassword)) {
  25. return false;
  26. }
  27. return is_string($configuredUser)
  28. && is_string($configuredPassword)
  29. && $this->validBasicAuthCredentials($request, $configuredUser, $configuredPassword);
  30. }
  31. private function validBasicAuthCredentials(Request $request, string $configuredUser, string $configuredPassword): bool
  32. {
  33. $receivedUser = $request->getUser();
  34. $receivedPassword = $request->getPassword();
  35. return is_string($receivedUser)
  36. && is_string($receivedPassword)
  37. && hash_equals($configuredUser, $receivedUser)
  38. && hash_equals($configuredPassword, $receivedPassword);
  39. }
  40. }