]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Fix for Ticket #1957 - API methods are not accessible when site is private (0.8-...
authorZach Copley <zach@status.net>
Thu, 5 Nov 2009 06:03:41 +0000 (22:03 -0800)
committerZach Copley <zach@status.net>
Thu, 5 Nov 2009 06:03:41 +0000 (22:03 -0800)
15 files changed:
actions/apifriendshipsexists.php
actions/apigrouplistall.php
actions/apigroupmembership.php
actions/apigroupshow.php
actions/apihelptest.php
actions/apistatusesshow.php
actions/apistatusnetversion.php
actions/apitimelinefriends.php
actions/apitimelinegroup.php
actions/apitimelinepublic.php
actions/apitimelinetag.php
actions/apiusershow.php
lib/apiauth.php
lib/apibareauth.php
lib/apiprivateauth.php [new file with mode: 0644]

index 2910f7eadc0bdd205b0552e90a257116d2e34934..c040b9f6ad87edc455137432ca0d90d6774440fc 100644 (file)
@@ -33,7 +33,7 @@ if (!defined('STATUSNET')) {
     exit(1);
 }
 
-require_once INSTALLDIR . '/lib/api.php';
+require_once INSTALLDIR . '/lib/apiprivateauth.php';
 
 /**
  * Tests for the existence of friendship between two users. Will return true if
@@ -48,7 +48,7 @@ require_once INSTALLDIR . '/lib/api.php';
  * @link     http://status.net/
  */
 
-class ApiFriendshipsExistsAction extends ApiAction
+class ApiFriendshipsExistsAction extends ApiPrivateAuthAction
 {
     var $user_a = null;
     var $user_b = null;
index 89469f36f4a180cfa08f525f85ddd7de0a1bc9e0..c597839a8823432fa5dcc0646b2c2369d214e5dc 100644 (file)
@@ -34,7 +34,7 @@ if (!defined('STATUSNET')) {
     exit(1);
 }
 
-require_once INSTALLDIR . '/lib/api.php';
+require_once INSTALLDIR . '/lib/apiprivateauth.php';
 
 /**
  * Returns of the lastest 20 groups for the site
@@ -49,7 +49,7 @@ require_once INSTALLDIR . '/lib/api.php';
  * @link     http://status.net/
  */
 
-class ApiGroupListAllAction extends ApiAction
+class ApiGroupListAllAction extends ApiPrivateAuthAction
 {
     var $groups   = null;
 
index b31e47b3989b46d673e8caecc45a95ae407c58ff..d221a64183473c086f9c14ede6a35fe122a905af 100644 (file)
@@ -34,7 +34,7 @@ if (!defined('STATUSNET')) {
     exit(1);
 }
 
-require_once INSTALLDIR . '/lib/api.php';
+require_once INSTALLDIR . '/lib/apiprivateauth.php';
 
 /**
  * List 20 newest members of the group specified by name or ID.
@@ -49,7 +49,7 @@ require_once INSTALLDIR . '/lib/api.php';
  * @link     http://status.net/
  */
 
-class ApiGroupMembershipAction extends ApiAction
+class ApiGroupMembershipAction extends ApiPrivateAuthAction
 {
     var $group    = null;
     var $profiles = null;
index 2bdb22bc41d8ee22f636386e43a6f5adfca32c80..b745ff92f6aff0223f63115b4141d3ff9b78a307 100644 (file)
@@ -34,7 +34,7 @@ if (!defined('STATUSNET')) {
     exit(1);
 }
 
-require_once INSTALLDIR . '/lib/api.php';
+require_once INSTALLDIR . '/lib/apiprivateauth.php';
 
 /**
  * Outputs detailed information about the group specified by ID
@@ -49,7 +49,7 @@ require_once INSTALLDIR . '/lib/api.php';
  * @link     http://status.net/
  */
 
-class ApiGroupShowAction extends ApiAction
+class ApiGroupShowAction extends ApiPrivateAuthAction
 {
     var $group = null;
 
index e4ef55f2e397f4f353d0d956375afdb3dda42471..f2c459e6fd5ddc4db5c99d3dd434b2be143bbb1b 100644 (file)
@@ -32,7 +32,7 @@ if (!defined('STATUSNET')) {
     exit(1);
 }
 
-require_once INSTALLDIR . '/lib/api.php';
+require_once INSTALLDIR . '/lib/apiprivateauth.php';
 
 /**
  * Returns the string "ok" in the requested format with a 200 OK HTTP status code.
@@ -45,7 +45,7 @@ require_once INSTALLDIR . '/lib/api.php';
  * @link     http://status.net/
  */
 
-class ApiHelpTestAction extends ApiAction
+class ApiHelpTestAction extends ApiPrivateAuthAction
 {
 
     /**
index 3be22ca59792340cda63914634bf2c37091be5a8..e26c009c44520beb4aa0494dc38d18824790beab 100644 (file)
@@ -37,7 +37,7 @@ if (!defined('STATUSNET')) {
     exit(1);
 }
 
-require_once INSTALLDIR . '/lib/api.php';
+require_once INSTALLDIR . '/lib/apiprivateauth.php';
 
 /**
  * Returns the notice specified by id as a Twitter-style status and inline user
@@ -55,7 +55,7 @@ require_once INSTALLDIR . '/lib/api.php';
  * @link     http://status.net/
  */
 
-class ApiStatusesShowAction extends ApiAction
+class ApiStatusesShowAction extends ApiPrivateAuthAction
 {
 
     var $notice_id = null;
index e73ab983be626c7b76e59aad31817a62ec6ee753..bbf891a899847d0bdbc8ba224deefaabea47ce4d 100644 (file)
@@ -32,7 +32,7 @@ if (!defined('STATUSNET')) {
     exit(1);
 }
 
-require_once INSTALLDIR . '/lib/api.php';
+require_once INSTALLDIR . '/lib/apiprivateauth.php';
 
 /**
  * Returns a version number for this version of StatusNet, which
@@ -48,7 +48,7 @@ require_once INSTALLDIR . '/lib/api.php';
  * @link     http://status.net/
  */
 
-class ApiStatusnetVersionAction extends ApiAction
+class ApiStatusnetVersionAction extends ApiPrivateAuthAction
 {
     /**
      * Take arguments for running
index 1ea35866e2af3d05060016aefa05f909dc375c13..66dd3f2b29fbf4da4b91a4b8f8bcb31f8308970d 100644 (file)
@@ -72,7 +72,7 @@ class ApiTimelineFriendsAction extends ApiBareAuthAction
     function prepare($args)
     {
         parent::prepare($args);
-
+        common_debug("api friends_timeline");
         $this->user = $this->getTargetUser($this->arg('id'));
 
         if (empty($this->user)) {
index 5d05429185f4647a3192048942bee9f9c40a9ab5..f25f6ba513d76b6ad85aa129be18dc3f4ffaabfb 100644 (file)
@@ -34,7 +34,7 @@ if (!defined('STATUSNET')) {
     exit(1);
 }
 
-require_once INSTALLDIR . '/lib/api.php';
+require_once INSTALLDIR . '/lib/apiprivateauth.php';
 
 /**
  * Returns the most recent notices (default 20) posted to the group specified by ID
@@ -49,7 +49,7 @@ require_once INSTALLDIR . '/lib/api.php';
  * @link     http://status.net/
  */
 
-class ApiTimelineGroupAction extends ApiAction
+class ApiTimelineGroupAction extends ApiPrivateAuthAction
 {
 
     var $group   = null;
index 58e26773483bf0d2ebedbd111f1112d0fa72d403..7a85042592bd8f527122302a8f4ca0145e168e2d 100644 (file)
@@ -37,7 +37,7 @@ if (!defined('STATUSNET')) {
     exit(1);
 }
 
-require_once INSTALLDIR . '/lib/api.php';
+require_once INSTALLDIR . '/lib/apiprivateauth.php';
 
 /**
  * Returns the most recent notices (default 20) posted by everybody
@@ -55,7 +55,7 @@ require_once INSTALLDIR . '/lib/api.php';
  * @link     http://status.net/
  */
 
-class ApiTimelinePublicAction extends ApiAction
+class ApiTimelinePublicAction extends ApiPrivateAuthAction
 {
 
     var $notices = null;
index a274daac00bdfc7507ae83aeab08345b0333ea76..452593c116a905db7f916685b38abe3df52b3869 100644 (file)
@@ -34,7 +34,7 @@ if (!defined('STATUSNET')) {
     exit(1);
 }
 
-require_once INSTALLDIR . '/lib/api.php';
+require_once INSTALLDIR . '/lib/apiprivateauth.php';
 
 /**
  * Returns the 20 most recent notices tagged by a given tag
@@ -49,7 +49,7 @@ require_once INSTALLDIR . '/lib/api.php';
  * @link     http://status.net/
  */
 
-class ApiTimelineTagAction extends ApiAction
+class ApiTimelineTagAction extends ApiPrivateAuthAction
 {
 
     var $notices = null;
index b3a939b431b2ab2427d1637d6f90d8df7160f4bd..aa7aec5a414fe39e02c876a1bdf632189ba71ab8 100644 (file)
@@ -34,7 +34,7 @@ if (!defined('STATUSNET')) {
     exit(1);
 }
 
-require_once INSTALLDIR . '/lib/api.php';
+require_once INSTALLDIR . '/lib/apiprivateauth.php';
 
 /**
  * Ouputs information for a user, specified by ID or screen name.
@@ -50,7 +50,7 @@ require_once INSTALLDIR . '/lib/api.php';
  * @link     http://status.net/
  */
 
-class ApiUserShowAction extends ApiAction
+class ApiUserShowAction extends ApiPrivateAuthAction
 {
     /**
      * Take arguments for running
index 2f2e44a2646b099f3ccaad7af2d89e8ed7fb46b6..2a337701326ef4fe0e8cbde671ec537e7aba230e 100644 (file)
@@ -66,6 +66,7 @@ class ApiAuthAction extends ApiAction
 
     function prepare($args)
     {
+        common_debug('ApiAction::prepare()');
         parent::prepare($args);
 
         if ($this->requiresAuth()) {
index 2d29c1ddd6d9aa61f29e623280e0a5cb99051a7c..a127a5bf3ccdc752db37675fdab3383a0177652c 100644 (file)
@@ -74,6 +74,8 @@ class ApiBareAuthAction extends ApiAuthAction
 
     function prepare($args)
     {
+        common_debug("ApiBareAuthAction::prepare()");
+        
         parent::prepare($args);
         return true;
     }
diff --git a/lib/apiprivateauth.php b/lib/apiprivateauth.php
new file mode 100644 (file)
index 0000000..5d00330
--- /dev/null
@@ -0,0 +1,82 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Base class for API actions that only require auth when a site
+ * is configured to be private
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  API
+ * @package   StatusNet
+ * @author    Adrian Lang <mail@adrianlang.de>
+ * @author    Brenda Wallace <shiny@cpan.org>
+ * @author    Craig Andrews <candrews@integralblue.com>
+ * @author    Dan Moore <dan@moore.cx>
+ * @author    Evan Prodromou <evan@status.net>
+ * @author    mEDI <medi@milaro.net>
+ * @author    Sarven Capadisli <csarven@status.net>
+ * @author    Zach Copley <zach@status.net> 
+ * @copyright 2009 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link      http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+require_once INSTALLDIR.'/lib/apiauth.php';
+
+/**
+ * Actions extending this class will require auth only if a site is private
+ *
+ * @category API
+ * @package  StatusNet
+ * @author   Adrian Lang <mail@adrianlang.de>
+ * @author   Brenda Wallace <shiny@cpan.org>
+ * @author   Craig Andrews <candrews@integralblue.com>
+ * @author   Dan Moore <dan@moore.cx>
+ * @author   Evan Prodromou <evan@status.net>
+ * @author   mEDI <medi@milaro.net>
+ * @author   Sarven Capadisli <csarven@status.net>
+ * @author   Zach Copley <zach@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link     http://status.net/
+ */
+
+class ApiPrivateAuthAction extends ApiAuthAction
+{
+
+   /**
+     * Does this API resource require authentication?
+     *
+     * @return boolean true or false
+     */
+
+    function requiresAuth()
+    {
+        // If the site is "private", all API methods except statusnet/config
+        // need authentication
+
+        if (common_config('site', 'private')) {
+            return true;
+        }
+
+        return false;
+    }
+
+}