From 8751c8b837efa18771b0887066cce5b37f12f7b9 Mon Sep 17 00:00:00 2001 From: Jakob Perry Date: Tue, 12 May 2020 01:00:39 -0700 Subject: [PATCH 1/4] LCH-4065: Update diactoros to support Drupal 8.6+. --- composer.json | 10 +++++----- src/Symfony/HmacAuthenticationProvider.php | 17 +++++++++++++++-- src/Symfony/HmacResponseListener.php | 18 +++++++++++++++--- 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/composer.json b/composer.json index 94077f9..340a865 100644 --- a/composer.json +++ b/composer.json @@ -14,14 +14,14 @@ "issues": "https://github.com/acquia/http-hmac-php/issues" }, "require": { - "php": "~5.6 || ~7.0", + "php": "^7.0", "psr/http-message": "~1.0.0" }, "suggest": { "guzzlehttp/guzzle": "~6.0", - "symfony/psr-http-message-bridge": "^1.0", + "symfony/psr-http-message-bridge": "^1.1.2 | ^2.0", "symfony/security": "^3.0 | ^4.0", - "zendframework/zend-diactoros": "^1.3" + "laminas/laminas-diactoros": "^1.8 || ^2.2" }, "require-dev": { "guzzlehttp/guzzle": "~6.0", @@ -30,10 +30,10 @@ "phpunit/phpunit": "~5.7", "sebastian/phpcpd": "^2.0", "friendsofphp/php-cs-fixer": "^2.11", - "symfony/psr-http-message-bridge": "^1.0", + "symfony/psr-http-message-bridge": "^1.1.2 | ^2.0", "symfony/security": "^3.0 | ^4.0", "symfony/security-bundle": "^3.0 | ^4.0", - "zendframework/zend-diactoros": "^1.3" + "laminas/laminas-diactoros": "^1.8 || ^2.2" }, "replace": { "acquia/hmac-request": "self.version" diff --git a/src/Symfony/HmacAuthenticationProvider.php b/src/Symfony/HmacAuthenticationProvider.php index d5280cf..dc53545 100644 --- a/src/Symfony/HmacAuthenticationProvider.php +++ b/src/Symfony/HmacAuthenticationProvider.php @@ -3,7 +3,12 @@ namespace Acquia\Hmac\Symfony; use Acquia\Hmac\RequestAuthenticatorInterface; +use Laminas\Diactoros\ResponseFactory; +use Laminas\Diactoros\ServerRequestFactory; +use Laminas\Diactoros\StreamFactory; +use Laminas\Diactoros\UploadedFileFactory; use Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory; +use Symfony\Bridge\PsrHttpMessage\Factory\PsrHttpFactory; use Symfony\Component\Security\Core\Authentication\Provider\AuthenticationProviderInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Exception\AuthenticationException; @@ -35,8 +40,16 @@ public function __construct(RequestAuthenticatorInterface $authenticator) */ public function authenticate(TokenInterface $token) { - $psr7Factory = new DiactorosFactory(); - $psr7Request = $psr7Factory->createRequest($token->getRequest()); + if (class_exists(DiactorosFactory::class)) + { + $httpMessageFactory = new DiactorosFactory(); + } + else + { + $httpMessageFactory = new PsrHttpFactory(new ServerRequestFactory(), new StreamFactory(), new UploadedFileFactory(), new ResponseFactory()); + } + + $psr7Request = $httpMessageFactory->createRequest($token->getRequest()); try { $key = $this->authenticator->authenticate($psr7Request); diff --git a/src/Symfony/HmacResponseListener.php b/src/Symfony/HmacResponseListener.php index 4198efc..0370dad 100644 --- a/src/Symfony/HmacResponseListener.php +++ b/src/Symfony/HmacResponseListener.php @@ -3,7 +3,12 @@ namespace Acquia\Hmac\Symfony; use Acquia\Hmac\ResponseSigner; +use Laminas\Diactoros\ResponseFactory; +use Laminas\Diactoros\ServerRequestFactory; +use Laminas\Diactoros\StreamFactory; +use Laminas\Diactoros\UploadedFileFactory; use Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory; +use Symfony\Bridge\PsrHttpMessage\Factory\PsrHttpFactory; use Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory; use Symfony\Component\HttpKernel\Event\FilterResponseEvent; use Symfony\Component\HttpKernel\KernelEvents; @@ -27,11 +32,18 @@ public function onKernelResponse(FilterResponseEvent $event) $response = $event->getResponse(); if ($request->attributes->has('hmac.key')) { - $psr7Factory = new DiactorosFactory(); + if (class_exists(PsrHttpFactory::class)) + { + $httpMessageFactory = new PsrHttpFactory(new ServerRequestFactory(), new StreamFactory(), new UploadedFileFactory(), new ResponseFactory()); + } + else + { + $httpMessageFactory = new DiactorosFactory(); + } $foundationFactory = new HttpFoundationFactory(); - $psr7Request = $psr7Factory->createRequest($request); - $psr7Response = $psr7Factory->createResponse($response); + $psr7Request = $httpMessageFactory->createRequest($request); + $psr7Response = $httpMessageFactory->createResponse($response); $signer = new ResponseSigner($request->attributes->get('hmac.key'), $psr7Request); $signedResponse = $signer->signResponse($psr7Response); From fbc5a69433396449355a1e836fc8ba2353925f92 Mon Sep 17 00:00:00 2001 From: Jakob Perry Date: Wed, 13 May 2020 13:44:23 -0700 Subject: [PATCH 2/4] Reverse the if statements for Diactoros. --- src/Symfony/HmacResponseListener.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Symfony/HmacResponseListener.php b/src/Symfony/HmacResponseListener.php index 0370dad..0ab9d92 100644 --- a/src/Symfony/HmacResponseListener.php +++ b/src/Symfony/HmacResponseListener.php @@ -32,13 +32,13 @@ public function onKernelResponse(FilterResponseEvent $event) $response = $event->getResponse(); if ($request->attributes->has('hmac.key')) { - if (class_exists(PsrHttpFactory::class)) + if (class_exists(DiactorosFactory::class)) { - $httpMessageFactory = new PsrHttpFactory(new ServerRequestFactory(), new StreamFactory(), new UploadedFileFactory(), new ResponseFactory()); + $httpMessageFactory = new DiactorosFactory(); } else { - $httpMessageFactory = new DiactorosFactory(); + $httpMessageFactory = new PsrHttpFactory(new ServerRequestFactory(), new StreamFactory(), new UploadedFileFactory(), new ResponseFactory()); } $foundationFactory = new HttpFoundationFactory(); From 24da91693a1ee44b505be1ae1c93e2e3db3a44d8 Mon Sep 17 00:00:00 2001 From: Jakob Perry Date: Wed, 13 May 2020 13:50:07 -0700 Subject: [PATCH 3/4] Update to php 7.3, fix some linting. --- .travis.yml | 3 +-- composer.json | 2 +- src/Symfony/HmacAuthenticationProvider.php | 6 ++---- src/Symfony/HmacResponseListener.php | 7 +++---- 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8220879..02a233b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,10 +7,9 @@ language: php php: + - 7.3 - 7.2 - 7.1 - - 7.0 - - 5.6 before_install: - travis_retry composer self-update diff --git a/composer.json b/composer.json index 340a865..08e1e20 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,7 @@ "issues": "https://github.com/acquia/http-hmac-php/issues" }, "require": { - "php": "^7.0", + "php": "^7.1", "psr/http-message": "~1.0.0" }, "suggest": { diff --git a/src/Symfony/HmacAuthenticationProvider.php b/src/Symfony/HmacAuthenticationProvider.php index dc53545..ee2d59b 100644 --- a/src/Symfony/HmacAuthenticationProvider.php +++ b/src/Symfony/HmacAuthenticationProvider.php @@ -40,12 +40,10 @@ public function __construct(RequestAuthenticatorInterface $authenticator) */ public function authenticate(TokenInterface $token) { - if (class_exists(DiactorosFactory::class)) - { + if (class_exists(DiactorosFactory::class)) { $httpMessageFactory = new DiactorosFactory(); } - else - { + else { $httpMessageFactory = new PsrHttpFactory(new ServerRequestFactory(), new StreamFactory(), new UploadedFileFactory(), new ResponseFactory()); } diff --git a/src/Symfony/HmacResponseListener.php b/src/Symfony/HmacResponseListener.php index 0ab9d92..4e20e48 100644 --- a/src/Symfony/HmacResponseListener.php +++ b/src/Symfony/HmacResponseListener.php @@ -32,14 +32,13 @@ public function onKernelResponse(FilterResponseEvent $event) $response = $event->getResponse(); if ($request->attributes->has('hmac.key')) { - if (class_exists(DiactorosFactory::class)) - { + if (class_exists(DiactorosFactory::class)) { $httpMessageFactory = new DiactorosFactory(); } - else - { + else { $httpMessageFactory = new PsrHttpFactory(new ServerRequestFactory(), new StreamFactory(), new UploadedFileFactory(), new ResponseFactory()); } + $foundationFactory = new HttpFoundationFactory(); $psr7Request = $httpMessageFactory->createRequest($request); From a2465d1ac81ba7f16fd27431c2a7051c6fd431f5 Mon Sep 17 00:00:00 2001 From: Jakob Perry Date: Wed, 13 May 2020 23:31:58 -0700 Subject: [PATCH 4/4] Relint again. --- src/Symfony/HmacAuthenticationProvider.php | 3 +-- src/Symfony/HmacResponseListener.php | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/Symfony/HmacAuthenticationProvider.php b/src/Symfony/HmacAuthenticationProvider.php index ee2d59b..7f207f9 100644 --- a/src/Symfony/HmacAuthenticationProvider.php +++ b/src/Symfony/HmacAuthenticationProvider.php @@ -42,8 +42,7 @@ public function authenticate(TokenInterface $token) { if (class_exists(DiactorosFactory::class)) { $httpMessageFactory = new DiactorosFactory(); - } - else { + } else { $httpMessageFactory = new PsrHttpFactory(new ServerRequestFactory(), new StreamFactory(), new UploadedFileFactory(), new ResponseFactory()); } diff --git a/src/Symfony/HmacResponseListener.php b/src/Symfony/HmacResponseListener.php index 4e20e48..1cc0e3d 100644 --- a/src/Symfony/HmacResponseListener.php +++ b/src/Symfony/HmacResponseListener.php @@ -34,8 +34,7 @@ public function onKernelResponse(FilterResponseEvent $event) if ($request->attributes->has('hmac.key')) { if (class_exists(DiactorosFactory::class)) { $httpMessageFactory = new DiactorosFactory(); - } - else { + } else { $httpMessageFactory = new PsrHttpFactory(new ServerRequestFactory(), new StreamFactory(), new UploadedFileFactory(), new ResponseFactory()); }