* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE * License as published by the Free Software Foundation; either * version 3 of the License, or any later version. * * This library 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 library. If not, see <http://www.gnu.org/licenses/>. * */ \OCP\JSON::checkLoggedIn(); \OCP\JSON::checkAppEnabled('activity'); \OCP\JSON::callCheck(); $l = \OCP\Util::getL10N('activity'); $token = $tokenUrl = ''; if ($_POST['enable'] === 'true') { // Check for collisions $token = \OCP\Util::generateRandomBytes(); $preferences = new \OC\Preferences(\OC_DB::getConnection()); $conflicts = $preferences->getUsersForValue('activity', 'rsstoken', $token); while (!empty($conflicts)) { $token = \OCP\Util::generateRandomBytes(); $conflicts = $preferences->getUsersForValue('activity', 'rsstoken', $token); } $tokenUrl = \OC::$server->getURLGenerator()->getAbsoluteURL(\OC::$server->getURLGenerator()->linkToRoute('activity.rss', array('token' => $token))); } \OCP\Config::setUserValue(\OCP\User::getUser(), 'activity', 'rsstoken', $token); \OCP\JSON::success(array('data' => array('message' => $l->t('Your settings have been updated.'), 'rsslink' => $tokenUrl)));
* GNU AFFERO GENERAL PUBLIC LICENSE for more details. * * You should have received a copy of the GNU Affero General Public * License along with this library. If not, see <http://www.gnu.org/licenses/>. * */ \OCP\App::checkAppEnabled('activity'); $forceUserLogout = false; if (!\OCP\User::isLoggedIn()) { if (!isset($_GET['token']) || strlen($_GET['token']) !== 30) { // Token missing or invalid header('HTTP/1.0 404 Not Found'); exit; } $preferences = new \OC\Preferences(\OC_DB::getConnection()); $users = $preferences->getUsersForValue('activity', 'rsstoken', $_GET['token']); if (sizeof($users) !== 1) { // User not found header('HTTP/1.0 404 Not Found'); exit; } // Token found login as that user \OC_User::setUserId(array_shift($users)); $forceUserLogout = true; } // check if the user has the right permissions. \OCP\User::checkLoggedIn(); // rss is of content type text/xml if (isset($_SERVER['HTTP_ACCEPT']) && stristr($_SERVER['HTTP_ACCEPT'], 'application/rss+xml')) { header('Content-Type: application/rss+xml'); } else {
public function testGetValueUsers() { // Prepare data $query = \OC_DB::prepare('INSERT INTO `*PREFIX*preferences` VALUES(?, ?, ?, ?)'); $query->execute(array('SomeUser', 'testGetUsersForValue', 'somekey', 'somevalue')); $query->execute(array('AnotherUser', 'testGetUsersForValue', 'somekey', 'someothervalue')); $query->execute(array('AUser', 'testGetUsersForValue', 'somekey', 'somevalue')); $preferences = new OC\Preferences(\OC_DB::getConnection()); $result = $preferences->getUsersForValue('testGetUsersForValue', 'somekey', 'somevalue'); sort($result); $this->assertEquals(array('AUser', 'SomeUser'), $result); // Clean DB after the test $query = \OC_DB::prepare('DELETE FROM `*PREFIX*preferences` WHERE `appid` = ?'); $query->execute(array('testGetUsersForValue')); }