X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Fapi.php;h=c40f189a24b5f8cda239246bf963c4143956db8b;hb=e440b9cea02549032ba4f79c43964219dea23d82;hp=2c1086ae11b96e23c3c297b0e457dfdb920c9309;hpb=dfbc427e0407d66d961a3d00b137dbc0a5f71599;p=quix0rs-gnu-social.git diff --git a/actions/api.php b/actions/api.php index 2c1086ae11..c40f189a24 100644 --- a/actions/api.php +++ b/actions/api.php @@ -45,9 +45,7 @@ class ApiAction extends Action { $this->api_method = $cmdext[0]; $this->content_type = strtolower($cmdext[1]); } - - # common_debug("apiaction = $this->api_action, method = $this->api_method, argument = $this->api_arg, ctype = $this->content_type"); - + # XXX Maybe check to see if the command actually exists first? if($this->requires_auth()) { if (!isset($_SERVER['PHP_AUTH_USER'])) { @@ -56,7 +54,7 @@ class ApiAction extends Action { header('WWW-Authenticate: Basic realm="Laconica API"'); # if the user hits cancel -- bam! - common_show_basic_auth_error(); + $this->show_basic_auth_error(); } else { $nickname = $_SERVER['PHP_AUTH_USER']; $password = $_SERVER['PHP_AUTH_PW']; @@ -67,7 +65,7 @@ class ApiAction extends Action { $this->process_command(); } else { # basic authentication failed - common_show_basic_auth_error(); + $this->show_basic_auth_error(); } } } else { @@ -101,23 +99,35 @@ class ApiAction extends Action { # Whitelist of API methods that don't need authentication function requires_auth() { static $noauth = array( 'statuses/public_timeline', - 'statuses/user_timeline', 'statuses/show', + 'users/show', 'help/test', 'help/downtime_schedule'); static $bareauth = array('statuses/user_timeline', 'statuses/friends'); - # noauth: never needs auth - # bareauth: only needs auth if without an argument - $fullname = "$this->api_action/$this->api_method"; - if (in_array($fullname, $bareauth) && !$this->api_arg) { - return true; - } if (in_array($fullname, $noauth)) { + if (in_array($fullname, $bareauth)) { + # bareauth: only needs auth if without an argument + if ($this->api_arg) { + return false; + } else { + return true; + } + } else if (in_array($fullname, $noauth)) { + # noauth: never needs auth return false; + } else { + # everybody else needs auth + return true; } - return true; + } + + function show_basic_auth_error() { + header('HTTP/1.1 401 Unauthorized'); + header('Content-type: text/plain'); + print("Could not authenticate you."); # exactly what Twitter says - no \n + exit(); } }