Fixed issue 167, timeline feed URL should only include auth token for private projects.

This commit is contained in:
Loic d'Anterroches 2009-10-08 13:27:15 +02:00
parent b6c5e803cb
commit e5934e0a3a
2 changed files with 42 additions and 1 deletions

View File

@ -32,6 +32,14 @@ class IDF_Project extends Pluf_Model
public $_model = __CLASS__; public $_model = __CLASS__;
public $_extra_cache = array(); public $_extra_cache = array();
protected $_pconf = null; protected $_pconf = null;
/**
* Check if the project as one restricted tab.
*
* This is the cached information.
*
* @see self::isRestricted
*/
protected $_isRestricted = null;
function init() function init()
{ {
@ -617,4 +625,37 @@ class IDF_Project extends Pluf_Model
} }
} }
} }
/**
* Check if the project has one restricted tab.
*
* @return bool
*/
public function isRestricted()
{
if ($this->_isRestricted !== null) {
return $this->_isRestricted;
}
if ($this->private) {
$this->_isRestricted = true;
return true;
}
$tabs = array(
'source_access_rights',
'issues_access_rights',
'downloads_access_rights',
'wiki_access_rights',
'review_access_rights'
);
$conf = $this->getConf();
foreach ($tabs as $tab) {
if (!in_array($conf->getVal($tab, 'all'),
array('all', 'none'))) {
$this->_isRestricted = true;
return true;
}
}
$this->_isRestricted = false;
return false;
}
} }

View File

@ -120,7 +120,7 @@ class IDF_Views_Project
$tags = IDF_Views_Wiki::getWikiTags($prj); $tags = IDF_Views_Wiki::getWikiTags($prj);
$pages = $tags[0]->get_idf_wikipage_list(); $pages = $tags[0]->get_idf_wikipage_list();
} }
if (!$request->user->isAnonymous()) { if (!$request->user->isAnonymous() and $prj->isRestricted()) {
$feedurl = Pluf_HTTP_URL_urlForView('idf_project_timeline_feed_auth', $feedurl = Pluf_HTTP_URL_urlForView('idf_project_timeline_feed_auth',
array($prj->shortname, array($prj->shortname,
IDF_Precondition::genFeedToken($prj, $request->user))); IDF_Precondition::genFeedToken($prj, $request->user)));