diff options
author | tailor <cygnus@janrain.com> | 2007-09-26 19:47:53 +0000 |
---|---|---|
committer | tailor <cygnus@janrain.com> | 2007-09-26 19:47:53 +0000 |
commit | d7e921dea988a2d030e077b75d8c721ec853f146 (patch) | |
tree | 1f4eaeea5f2a29283d33dfddd3fd9f244b84647a /Auth | |
parent | 62c7fc41349c8c196e9d4a1dcc1286cd15764805 (diff) | |
download | php-openid-d7e921dea988a2d030e077b75d8c721ec853f146.zip php-openid-d7e921dea988a2d030e077b75d8c721ec853f146.tar.gz php-openid-d7e921dea988a2d030e077b75d8c721ec853f146.tar.bz2 |
[project @ Split consumer response processing into mode-specific methods]
Diffstat (limited to 'Auth')
-rw-r--r-- | Auth/OpenID/Consumer.php | 77 |
1 files changed, 55 insertions, 22 deletions
diff --git a/Auth/OpenID/Consumer.php b/Auth/OpenID/Consumer.php index 9ccbaaf..e3a6334 100644 --- a/Auth/OpenID/Consumer.php +++ b/Auth/OpenID/Consumer.php @@ -637,29 +637,62 @@ class Auth_OpenID_GenericConsumer { } } - if ($mode == 'cancel') { - return new Auth_OpenID_CancelResponse($endpoint); - } else if ($mode == 'error') { - $error = $message->getArg(Auth_OpenID_OPENID_NS, 'error'); - $contact = $message->getArg(Auth_OpenID_OPENID_NS, 'contact'); - $reference = $message->getArg(Auth_OpenID_OPENID_NS, 'reference'); - - return new Auth_OpenID_FailureResponse($endpoint, $error, - $contact, $reference); - } else if ($message->isOpenID2() && ($mode == 'setup_needed')) { - return new Auth_OpenID_SetupNeededResponse($endpoint); - - } else if ($mode == 'id_res') { - if ($this->_checkSetupNeeded($message)) { - return SetupNeededResponse($endpoint, - $result->user_setup_url); - } else { - return $this->_doIdRes($message, $endpoint); - } + $mode_methods = array( + 'cancel' => '_complete_cancel', + 'error' => '_complete_error', + 'setup_needed' => '_complete_setup_needed', + 'id_res' => '_complete_id_res', + ); + + $method = Auth_OpenID::arrayGet($mode_methods, $mode, + '_completeInvalid'); + + return call_user_func_array(array(&$this, $method), + array($message, $endpoint)); + } + + function _completeInvalid($message, &$endpoint) + { + $mode = $message->getArg(Auth_OpenID_OPENID_NS, 'mode', + '<No mode set>'); + + return new Auth_OpenID_FailureResponse($endpoint, + sprintf("Invalid openid.mode '%s'", $mode)); + } + + function _complete_cancel($message, &$endpoint) + { + return new Auth_OpenID_CancelResponse($endpoint); + } + + function _complete_error($message, &$endpoint) + { + $error = $message->getArg(Auth_OpenID_OPENID_NS, 'error'); + $contact = $message->getArg(Auth_OpenID_OPENID_NS, 'contact'); + $reference = $message->getArg(Auth_OpenID_OPENID_NS, 'reference'); + + return new Auth_OpenID_FailureResponse($endpoint, $error, + $contact, $reference); + } + + function _complete_setup_needed($message, &$endpoint) + { + if (!$message->isOpenID2()) { + return $this->_completeInvalid($message, $endpoint); + } + + return new Auth_OpenID_SetupNeededResponse($endpoint); + } + + function _complete_id_res($message, &$endpoint) + { + $user_setup_url = $message->getArg(Auth_OpenID_OPENID1_NS, + 'user_setup_url'); + + if ($this->_checkSetupNeeded($message)) { + return SetupNeededResponse($endpoint, $user_setup_url); } else { - return new Auth_OpenID_FailureResponse($endpoint, - sprintf("Invalid openid.mode '%s'", - $mode)); + return $this->_doIdRes($message, $endpoint); } } |