From c6235520f9d7238dfbc811081f243d4eff95ead7 Mon Sep 17 00:00:00 2001 From: semos Date: Wed, 9 Oct 2013 17:06:05 +0200 Subject: [PATCH 1/3] Update GenericConsumer.php Allow to specify HTTP method used to redirect to openid server --- library/ZendOpenId/Consumer/GenericConsumer.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/ZendOpenId/Consumer/GenericConsumer.php b/library/ZendOpenId/Consumer/GenericConsumer.php index 38e5279..c16463a 100644 --- a/library/ZendOpenId/Consumer/GenericConsumer.php +++ b/library/ZendOpenId/Consumer/GenericConsumer.php @@ -782,7 +782,7 @@ protected function _discovery(&$id, &$server, &$version) * @return bool */ protected function _checkId($immediate, $id, $returnTo=null, $root=null, - $extensions=null, Response $response = null) + $extensions=null, Response $response = null, $method = 'GET') { $this->_setError(''); @@ -863,7 +863,7 @@ protected function _checkId($immediate, $id, $returnTo=null, $root=null, return false; } - OpenId::redirect($server, $params, $response); + OpenId::redirect($server, $params, $response, $method); return true; } From 09b42395586852448a6e3c19506b28c934451c85 Mon Sep 17 00:00:00 2001 From: semos Date: Wed, 9 Oct 2013 17:10:10 +0200 Subject: [PATCH 2/3] Update OpenId.php If method is POST, do not use HTTP 302 or Location header to allow for a real POST request --- library/ZendOpenId/OpenId.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/library/ZendOpenId/OpenId.php b/library/ZendOpenId/OpenId.php index 348c20b..836e89c 100644 --- a/library/ZendOpenId/OpenId.php +++ b/library/ZendOpenId/OpenId.php @@ -438,9 +438,11 @@ public static function redirect($url, $params = null, ""); } - $response->setStatusCode(302); + if ($method == 'GET') { + $response->setStatusCode(302); - $response->getHeaders()->addHeaderLine('Location', $url); + $response->getHeaders()->addHeaderLine('Location', $url); + } if (!headers_sent()) { header($response->renderStatusLine()); From f549feda26ab722df50c62b1f91518a8359d877d Mon Sep 17 00:00:00 2001 From: semos Date: Wed, 9 Oct 2013 17:29:51 +0200 Subject: [PATCH 3/3] Allow to specify redirect method on login action Allow to specify HTTP method used to redirect to openid server Modified login() and _checkId() Added phpDoc comments. --- library/ZendOpenId/Consumer/GenericConsumer.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/library/ZendOpenId/Consumer/GenericConsumer.php b/library/ZendOpenId/Consumer/GenericConsumer.php index c16463a..4c5f260 100644 --- a/library/ZendOpenId/Consumer/GenericConsumer.php +++ b/library/ZendOpenId/Consumer/GenericConsumer.php @@ -104,10 +104,11 @@ public function __construct(Storage\AbstractStorage $storage = null, * @param mixed $extensions extension object or array of extensions objects * @param Response $response an optional response * object to perform HTTP or HTML form redirection + * @param string $method HTTP method used to redirect to server * @return bool */ public function login($id, $returnTo = null, $root = null, $extensions = null, - Response $response = null) + Response $response = null, $method = 'GET') { return $this->_checkId( false, @@ -115,7 +116,8 @@ public function login($id, $returnTo = null, $root = null, $extensions = null, $returnTo, $root, $extensions, - $response); + $response, + $method); } /**