From: <var...@us...> - 2015-01-20 13:41:50
|
Revision: 9485 http://sourceforge.net/p/phpwiki/code/9485 Author: vargenau Date: 2015-01-20 13:41:47 +0000 (Tue, 20 Jan 2015) Log Message: ----------- Make credentials a string Modified Paths: -------------- trunk/PhpWiki.wsdl trunk/SOAP.php Modified: trunk/PhpWiki.wsdl =================================================================== --- trunk/PhpWiki.wsdl 2015-01-19 16:20:47 UTC (rev 9484) +++ trunk/PhpWiki.wsdl 2015-01-20 13:41:47 UTC (rev 9485) @@ -9,12 +9,12 @@ <message name="getPageContent"> <part name="pagename" type="xsd:string"/> - <part name="credentials" type="typens:Credentials"/> + <part name="credentials" type="xsd:string"/> </message> <message name="getPageRevision"> <part name="pagename" type="xsd:string"/> <part name="revision" type="xsd:double"/> - <part name="credentials" type="typens:Credentials"/> + <part name="credentials" type="xsd:string"/> </message> <message name="getPageContentResponse"> <part name="content" type="xsd:string"/> @@ -22,7 +22,7 @@ <message name="getCurrentRevision"> <part name="pagename" type="xsd:string"/> - <part name="credentials" type="typens:Credentials"/> + <part name="credentials" type="xsd:string"/> </message> <message name="getRevisionResponse"> <part name="revision" type="xsd:double"/> @@ -30,7 +30,7 @@ <message name="getPageMeta"> <part name="pagename" type="xsd:string"/> - <part name="credentials" type="typens:Credentials"/> + <part name="credentials" type="xsd:string"/> </message> <message name="getPageMetaResponse"> <part name="meta" type="typens:PageMetadata"/> @@ -38,59 +38,59 @@ <message name="doSavePage"> <part name="pagename" type="xsd:string"/> <part name="content" type="xsd:string"/> - <part name="credentials" type="typens:Credentials"/> + <part name="credentials" type="xsd:string"/> </message> <message name="doSavePageResponse"> <part name="successcode" type="xsd:int"/> </message> <message name="getAllPagenames"> - <part name="credentials" type="typens:Credentials"/> + <part name="credentials" type="xsd:string"/> </message> <message name="getBackLinks"> <part name="pagename" type="xsd:string"/> - <part name="credentials" type="typens:Credentials"/> + <part name="credentials" type="xsd:string"/> </message> <message name="doTitleSearch"> <part name="query" type="xsd:string"/> - <part name="credentials" type="typens:Credentials"/> + <part name="credentials" type="xsd:string"/> </message> <message name="doFullTextSearch"> <part name="query" type="xsd:string"/> - <part name="credentials" type="typens:Credentials"/> + <part name="credentials" type="xsd:string"/> </message> <message name="getRecentChanges"> <part name="limit" type="xsd:int"/> <part name="since" type="xsd:int"/> <part name="include_minor" type="xsd:int"/> - <part name="credentials" type="typens:Credentials"/> + <part name="credentials" type="xsd:string"/> </message> <message name="listLinks"> <part name="pagename" type="xsd:string"/> - <part name="credentials" type="typens:Credentials"/> + <part name="credentials" type="xsd:string"/> </message> <message name="listPlugins"> - <part name="credentials" type="typens:Credentials"/> + <part name="credentials" type="xsd:string"/> </message> <message name="callPlugin"> <part name="pluginname" type="xsd:string"/> <part name="pluginargs" type="xsd:string"/> - <part name="credentials" type="typens:Credentials"/> + <part name="credentials" type="xsd:string"/> </message> <message name="getPluginSynopsis"> <part name="pluginname" type="xsd:string"/> - <part name="credentials" type="typens:Credentials"/> + <part name="credentials" type="xsd:string"/> </message> <message name="listRelations"> <part name="option" type="xsd:int"/> - <part name="credentials" type="typens:Credentials"/> + <part name="credentials" type="xsd:string"/> </message> <message name="linkSearch"> <part name="linktype" type="xsd:string"/> <part name="search" type="xsd:string"/> <part name="pages" type="xsd:string"/> <part name="relation" type="xsd:string"/> - <part name="credentials" type="typens:Credentials"/> + <part name="credentials" type="xsd:string"/> </message> <message name="PagenameListResponse"> @@ -133,12 +133,6 @@ <part name="version" type="xsd:int"/> </xsd:all> </xsd:complexType> - <xsd:complexType name="Credentials"> - <xsd:all> - <xsd:element name="username" type="xsd:string"/> - <xsd:element name="password" type="xsd:string"/> - </xsd:all> - </xsd:complexType> <xsd:complexType name="PageMetadata"> <xsd:all> <xsd:element name="createdby" type="xsd:string"/> Modified: trunk/SOAP.php =================================================================== --- trunk/SOAP.php 2015-01-19 16:20:47 UTC (rev 9484) +++ trunk/SOAP.php 2015-01-20 13:41:47 UTC (rev 9485) @@ -26,32 +26,40 @@ function checkCredentials(&$server, &$credentials, $access, $pagename) { - /* - // check the "Authorization: Basic '.base64_encode("$this->username:$this->password").'\r\n'" header - if (isset($server->header['Authorization'])) { - $line = base64_decode(str_replace("Basic ", "", trim($server->header['Authorization']))); - list($credentials['username'], $credentials['password']) = explode(':', $line); - } else { - if (!isset($_SERVER)) - $_SERVER =& $GLOBALS['HTTP_SERVER_VARS']; + // check the "Authorization: Basic '.base64_encode("$this->username:$this->password").'\r\n'" header + if (isset($server->header['Authorization'])) { + $line = base64_decode(str_replace("Basic ", "", trim($server->header['Authorization']))); + list($username, $password) = explode(':', $line); + } elseif ($credentials && is_string($credentials) && base64_decode($credentials, true)) { + list($username, $password) = explode(':', base64_decode($credentials)); + } else { + if (!isset($_SERVER)) + $_SERVER =& $GLOBALS['HTTP_SERVER_VARS']; // TODO: where in the header is the client IP - if (!isset($credentials['username'])) { + if (!isset($username)) { if (isset($_SERVER['REMOTE_ADDR'])) - $credentials['username'] = $_SERVER['REMOTE_ADDR']; + $username = $_SERVER['REMOTE_ADDR']; elseif (isset($GLOBALS['REMOTE_ADDR'])) - $credentials['username'] = $GLOBALS['REMOTE_ADDR']; else - $credentials['username'] = $server->host; + $username = $GLOBALS['REMOTE_ADDR']; + else + $username = $server->host; } - } - if (!isset($credentials['password'])) $credentials['password'] = ''; + } + if (!isset($password)) + $password = ''; - global $request; - $request->_user = WikiUser($credentials['username']); - $request->_user->AuthCheck(array('userid' => $credentials['username'], - 'passwd' => $credentials['password'])); - if (!mayAccessPage($access, $pagename)) - $server->fault(401, '', "no permission"); - */ + global $request; + $request->_user = WikiUser($username); + $request->_user->AuthCheck(array('userid' => $username, 'passwd' => $password)); + + if (!mayAccessPage($access, $pagename)) { + $server->fault(401, "no permission, " + . "access=$access, " + . "pagename=$pagename, " + . "username=$username, " + ); + } + $credentials = array('username' => $username, 'password' => $password); } class PhpWikiSoapServer This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |