]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Some adjustments to the way API auth works after merging testing and 0.9.x
authorZach Copley <zach@status.net>
Thu, 28 Jan 2010 00:41:44 +0000 (00:41 +0000)
committerZach Copley <zach@status.net>
Thu, 28 Jan 2010 00:41:44 +0000 (00:41 +0000)
lib/apiauth.php

index ac5e997c78dfc9b96b96810a1bee61fcda410637..d441014addfaa1c283b6d79d3555055de9be6325 100644 (file)
@@ -57,7 +57,6 @@ class ApiAuthAction extends ApiAction
     var $auth_user_password = null;
     var $access_token       = null;
     var $oauth_source       = null;
-    var $auth_user          = null;
 
     /**
      * Take arguments for running, and output basic auth header if needed
@@ -82,22 +81,27 @@ class ApiAuthAction extends ApiAction
             if (!empty($this->access_token)) {
                 $this->checkOAuthRequest();
             } else {
-                $this->checkBasicAuthUser();
+                $this->checkBasicAuthUser(true);
             }
         } else {
 
             // Check to see if a basic auth user is there even
             // if one's not required
 
-            $this->checkBasicAuthUser(false);
+            if (empty($this->access_token)) {
+                $this->checkBasicAuthUser(false);
+            }
         }
 
         // Reject API calls with the wrong access level
 
         if ($this->isReadOnly($args) == false) {
+
+            common_debug(get_class($this) . ' is not read-only!');
+
             if ($this->access != self::READ_WRITE) {
-                $msg = 'API resource requires read-write access, ' .
-                       'but you only have read access.';
+                $msg = _('API resource requires read-write access, ' .
+                         'but you only have read access.');
                 $this->clientError($msg, 401, $this->format);
                 exit;
             }
@@ -176,7 +180,7 @@ class ApiAuthAction extends ApiAction
                                                  ($this->access = self::READ_WRITE) ?
                                                  'read-write' : 'read-only'
                                                  ));
-                    return true;
+                    return;
                 } else {
                     throw new OAuthException('Bad access token.');
                 }
@@ -228,9 +232,14 @@ class ApiAuthAction extends ApiAction
 
         } else {
 
+            $user = common_check_user($this->auth_user_nickname,
+                                      $this->auth_user_password);
+
             if (Event::handle('StartSetApiUser', array(&$user))) {
-                $this->auth_user = common_check_user($this->auth_user_nickname,
-                                                     $this->auth_user_password);
+
+                if (!empty($user)) {
+                    $this->auth_user = $user;
+                }
 
                 Event::handle('EndSetApiUser', array($user));
             }
@@ -239,18 +248,18 @@ class ApiAuthAction extends ApiAction
 
             $this->access = self::READ_WRITE;
 
-            if (empty($this->auth_user)) {
+            if (empty($this->auth_user) && $required) {
 
                 // basic authentication failed
 
                 list($proxy, $ip) = common_client_ip();
 
-                common_log(
-                    LOG_WARNING,
-                    'Failed API auth attempt, nickname = ' .
-                    "$nickname, proxy = $proxy, ip = $ip."
-                );
-
+                $msg = sprintf(_('Failed API auth attempt, nickname = %1$s, ' .
+                         'proxy = %2$s, ip = %3$s'),
+                               $this->auth_user_nickname,
+                               $proxy,
+                               $ip);
+                common_log(LOG_WARNING, $msg);
                 $this->showAuthError();
                 exit;
             }