make() static public method

static public make ( $message, $identity, $return_to, $trust_root = null, $immediate = false, $assoc_handle = null, $server = null )
Beispiel #1
0
	function fromMessage(&$message, $server)
	{
		$mode = $message->getArg(Auth_OpenID_OPENID_NS, 'mode');
		$immediate = null;

		if ($mode == "checkid_immediate") {
			$immediate = true;
			$mode = "checkid_immediate";
		} else {
			$immediate = false;
			$mode = "checkid_setup";
		}

		$return_to = $message->getArg(Auth_OpenID_OPENID_NS,
                                      'return_to');

		if (($message->isOpenID1()) &&
		(!$return_to)) {
			$fmt = "Missing required field 'return_to' from checkid request";
			return new Auth_OpenID_ServerError($message, $fmt);
		}

		$identity = $message->getArg(Auth_OpenID_OPENID_NS,
                                     'identity');
		$claimed_id = $message->getArg(Auth_OpenID_OPENID_NS, 'claimed_id');
		if ($message->isOpenID1()) {
			if ($identity === null) {
				$s = "OpenID 1 message did not contain openid.identity";
				return new Auth_OpenID_ServerError($message, $s);
			}
		} else {
			if ($identity && !$claimed_id) {
				$s = "OpenID 2.0 message contained openid.identity but not " .
                  "claimed_id";
				return new Auth_OpenID_ServerError($message, $s);
			} else if ($claimed_id && !$identity) {
				$s = "OpenID 2.0 message contained openid.claimed_id " .
                  "but not identity";
				return new Auth_OpenID_ServerError($message, $s);
			}
		}

		// There's a case for making self.trust_root be a TrustRoot
		// here.  But if TrustRoot isn't currently part of the
		// "public" API, I'm not sure it's worth doing.
		if ($message->isOpenID1()) {
			$trust_root_param = 'trust_root';
		} else {
			$trust_root_param = 'realm';
		}
		$trust_root = $message->getArg(Auth_OpenID_OPENID_NS,
		$trust_root_param);
		if (! $trust_root) {
			$trust_root = $return_to;
		}

		if (! $message->isOpenID1() &&
		($return_to === null) &&
		($trust_root === null)) {
			return new Auth_OpenID_ServerError($message,
              "openid.realm required when openid.return_to absent");
		}

		$assoc_handle = $message->getArg(Auth_OpenID_OPENID_NS,
                                         'assoc_handle');

		$obj = Auth_OpenID_CheckIDRequest::make($message,
		$identity,
		$return_to,
		$trust_root,
		$immediate,
		$assoc_handle,
		$server);

		if (is_a($obj, 'Auth_OpenID_ServerError')) {
			return $obj;
		}

		$obj->claimed_id = $claimed_id;

		return $obj;
	}
Beispiel #2
0
 function fromQuery($query)
 {
     global $_Auth_OpenID_OpenID_Prefix;
     $mode = $query[$_Auth_OpenID_OpenID_Prefix . 'mode'];
     $immediate = null;
     if ($mode == "checkid_immediate") {
         $immediate = true;
         $mode = "checkid_immediate";
     } else {
         $immediate = false;
         $mode = "checkid_setup";
     }
     $required = array('identity', 'return_to');
     $optional = array('trust_root', 'assoc_handle');
     $values = array();
     foreach ($required as $field) {
         if (array_key_exists($_Auth_OpenID_OpenID_Prefix . $field, $query)) {
             $value = $query[$_Auth_OpenID_OpenID_Prefix . $field];
         } else {
             return new Auth_OpenID_ServerError($query, sprintf("Missing required field %s from request", $field));
         }
         $values[$field] = $value;
     }
     foreach ($optional as $field) {
         $value = null;
         if (array_key_exists($_Auth_OpenID_OpenID_Prefix . $field, $query)) {
             $value = $query[$_Auth_OpenID_OpenID_Prefix . $field];
         }
         if ($value) {
             $values[$field] = $value;
         }
     }
     if (!Auth_OpenID_TrustRoot::_parse($values['return_to'])) {
         return new Auth_OpenID_MalformedReturnURL($query, $values['return_to']);
     }
     $obj = Auth_OpenID_CheckIDRequest::make($query, $values['identity'], $values['return_to'], Auth_OpenID::arrayGet($values, 'trust_root', null), $immediate);
     if (is_a($obj, 'Auth_OpenID_ServerError')) {
         return $obj;
     }
     if (Auth_OpenID::arrayGet($values, 'assoc_handle')) {
         $obj->assoc_handle = $values['assoc_handle'];
     }
     return $obj;
 }