Auth_OpenID_AssociateRequest::fromMessage PHP Method

fromMessage() static public method

static public fromMessage ( $message, $server = null )
    static function fromMessage($message, $server = null)
    {
        if ($message->isOpenID1()) {
            $session_type = $message->getArg(Auth_OpenID_OPENID_NS, 'session_type');
            if ($session_type == 'no-encryption') {
                // oidutil.log('Received OpenID 1 request with a no-encryption '
                //             'assocaition session type. Continuing anyway.')
            } else {
                if (!$session_type) {
                    $session_type = 'no-encryption';
                }
            }
        } else {
            $session_type = $message->getArg(Auth_OpenID_OPENID_NS, 'session_type');
            if ($session_type === null) {
                return new Auth_OpenID_ServerError($message, "session_type missing from request");
            }
        }
        $session_class = Auth_OpenID::arrayGet(Auth_OpenID_AssociateRequest::getSessionClasses(), $session_type);
        if ($session_class === null) {
            return new Auth_OpenID_ServerError($message, "Unknown session type " . $session_type);
        }
        $session = call_user_func(array($session_class, 'fromMessage'), $message);
        if (is_a($session, 'Auth_OpenID_ServerError')) {
            return $session;
        }
        $assoc_type = $message->getArg(Auth_OpenID_OPENID_NS, 'assoc_type', 'HMAC-SHA1');
        if (!in_array($assoc_type, $session->allowed_assoc_types)) {
            $fmt = "Session type %s does not support association type %s";
            return new Auth_OpenID_ServerError($message, sprintf($fmt, $session_type, $assoc_type));
        }
        $obj = new Auth_OpenID_AssociateRequest($session, $assoc_type);
        $obj->message = $message;
        $obj->namespace = $message->getOpenIDNamespace();
        return $obj;
    }

Usage Example

コード例 #1
0
 function test_missingSessionTypeOpenID2()
 {
     // Make sure session_type is required in OpenID 2
     $msg = Auth_OpenID_Message::fromPostArgs(array('openid.ns' => Auth_OpenID_OPENID2_NS));
     $result = Auth_OpenID_AssociateRequest::fromMessage($msg);
     $this->assertTrue(is_a($result, 'Auth_OpenID_ServerError'));
 }