]> source.dussan.org Git - nextcloud-server.git/commitdiff
use uid provided by setupfs hook to mount server2server shares, otherwise mount will...
authorBjoern Schiessle <schiessle@owncloud.com>
Mon, 19 Jan 2015 23:35:47 +0000 (00:35 +0100)
committerBjoern Schiessle <schiessle@owncloud.com>
Mon, 26 Jan 2015 15:54:50 +0000 (16:54 +0100)
apps/files_sharing/ajax/external.php
apps/files_sharing/api/server2server.php
apps/files_sharing/application.php
apps/files_sharing/lib/controllers/sharecontroller.php
apps/files_sharing/lib/external/manager.php

index 1a709eda07c4ee53a5c34ace0a9c49a787839195..a206cacafa37531b01e39d895b530ab7abf93950 100644 (file)
@@ -34,8 +34,8 @@ $externalManager = new \OCA\Files_Sharing\External\Manager(
                \OC::$server->getDatabaseConnection(),
                \OC\Files\Filesystem::getMountManager(),
                \OC\Files\Filesystem::getLoader(),
-               \OC::$server->getUserSession(),
-               \OC::$server->getHTTPHelper()
+               \OC::$server->getHTTPHelper(),
+               \OC::$server->getUserSession()->getUser()->getUID()
 );
 
 $name = OCP\Files::buildNotExistingFileName('/', $name);
index f78d64caa73a3067cc9445e4e60320796382324b..7dce0df7d83cd0143fc5c0cc514e308ee85d8b81 100644 (file)
@@ -60,8 +60,9 @@ class Server2Server {
                                        \OC::$server->getDatabaseConnection(),
                                        \OC\Files\Filesystem::getMountManager(),
                                        \OC\Files\Filesystem::getLoader(),
-                                       \OC::$server->getUserSession(),
-                                       \OC::$server->getHTTPHelper());
+                                       \OC::$server->getHTTPHelper(),
+                                       $shareWith
+                               );
 
                        $name = \OCP\Files::buildNotExistingFileName('/', $name);
 
index 56ec448d6a95e180818fad73681ac915c22bfd4e..3302848106f1f3f5cb71b1706c9cdb40225df143 100644 (file)
@@ -69,12 +69,14 @@ class Application extends App {
                        return Helper::isIncomingServer2serverShareEnabled();
                });
                $container->registerService('ExternalManager', function(SimpleContainer $c) use ($server){
+                       $user = $server->getUserSession()->getUser();
+                       $uid = $user ? $user->getUID() : null;
                        return new \OCA\Files_Sharing\External\Manager(
                                        $server->getDatabaseConnection(),
                                        \OC\Files\Filesystem::getMountManager(),
                                        \OC\Files\Filesystem::getLoader(),
-                                       $server->getUserSession(),
-                                       $server->getHTTPHelper()
+                                       $server->getHTTPHelper(),
+                                       $uid
                        );
                });
 
index 1d8eabc198497b2fd88329321b4cd76ec2f618fc..cd013d4ca96b4a1a59a90ed9e8224b16daaaaac8 100644 (file)
@@ -142,7 +142,6 @@ class ShareController extends Controller {
                        return new TemplateResponse('core', '404', array(), 'guest');
                }
 
-               $linkItem = OCP\Share::getShareByToken($token, false);
                $shareOwner = $linkItem['uid_owner'];
                $originalSharePath = null;
                $rootLinkItem = OCP\Share::resolveReShare($linkItem);
index 57dc38a99544f5bf7a6b55bdc1a1c29a43c558af..968edba089af2ce8d01effacef97f48ce86de25f 100644 (file)
@@ -13,6 +13,11 @@ use OC\Files\Filesystem;
 class Manager {
        const STORAGE = '\OCA\Files_Sharing\External\Storage';
 
+       /**
+        * @var string
+        */
+       private $uid;
+
        /**
         * @var \OCP\IDBConnection
         */
@@ -28,11 +33,6 @@ class Manager {
         */
        private $storageLoader;
 
-       /**
-        * @var \OC\User\Session
-        */
-       private $userSession;
-
        /**
         * @var \OC\HTTPHelper
         */
@@ -41,21 +41,21 @@ class Manager {
        /**
         * @param \OCP\IDBConnection $connection
         * @param \OC\Files\Mount\Manager $mountManager
-        * @param \OC\User\Session $userSession
         * @param \OC\Files\Storage\StorageFactory $storageLoader
+        * @param string $uid
         */
        public function __construct(\OCP\IDBConnection $connection, \OC\Files\Mount\Manager $mountManager,
-                                                               \OC\Files\Storage\StorageFactory $storageLoader, \OC\User\Session $userSession, \OC\HTTPHelper $httpHelper) {
+                                                               \OC\Files\Storage\StorageFactory $storageLoader, \OC\HTTPHelper $httpHelper, $uid) {
                $this->connection = $connection;
                $this->mountManager = $mountManager;
-               $this->userSession = $userSession;
                $this->storageLoader = $storageLoader;
                $this->httpHelper = $httpHelper;
+               $this->uid = $uid;
        }
 
        public function addShare($remote, $token, $password, $name, $owner, $accepted=false, $user = null, $remoteId = -1) {
 
-               $user = $user ? $user: $this->userSession->getUser()->getUID();
+               $user = $user ? $user : $this->uid;
                $accepted = $accepted ? 1 : 0;
 
                $mountPoint = Filesystem::normalizePath('/' . $name);
@@ -86,14 +86,13 @@ class Manager {
                        return false;
                }
 
-               $user = $this->userSession->getUser();
-               if ($user) {
+               if (!is_null($this->uid)) {
                        $query = $this->connection->prepare('
                                SELECT `remote`, `share_token`, `password`, `mountpoint`, `owner`
                                FROM `*PREFIX*share_external`
                                WHERE `user` = ? AND `accepted` = ?
                        ');
-                       $query->execute(array($user->getUID(), 1));
+                       $query->execute(array($this->uid, 1));
 
                        while ($row = $query->fetch()) {
                                $row['manager'] = $this;
@@ -114,7 +113,7 @@ class Manager {
                        SELECT `remote`, `share_token`
                        FROM  `*PREFIX*share_external`
                        WHERE `id` = ? AND `user` = ?');
-               $result = $getShare->execute(array($id,  $this->userSession->getUser()->getUID()));
+               $result = $getShare->execute(array($id, $this->uid));
 
                return $result ? $getShare->fetch() : false;
        }
@@ -133,7 +132,7 @@ class Manager {
                                UPDATE `*PREFIX*share_external`
                                SET `accepted` = ?
                                WHERE `id` = ? AND `user` = ?');
-                       $acceptShare->execute(array(1, $id,  $this->userSession->getUser()->getUID()));
+                       $acceptShare->execute(array(1, $id, $this->uid));
                        $this->sendFeedbackToRemote($share['remote'], $share['share_token'], $id, 'accept');
                }
        }
@@ -150,7 +149,7 @@ class Manager {
                if ($share) {
                        $removeShare = $this->connection->prepare('
                                DELETE FROM `*PREFIX*share_external` WHERE `id` = ? AND `user` = ?');
-                       $removeShare->execute(array($id, $this->userSession->getUser()->getUID()));
+                       $removeShare->execute(array($id, $this->uid));
                        $this->sendFeedbackToRemote($share['remote'], $share['share_token'], $id, 'decline');
                }
        }
@@ -175,19 +174,20 @@ class Manager {
                return ($result['success'] && $status['ocs']['meta']['statuscode'] === 100);
        }
 
-       public static function setup() {
+       public static function setup($params) {
                $externalManager = new \OCA\Files_Sharing\External\Manager(
                                \OC::$server->getDatabaseConnection(),
                                \OC\Files\Filesystem::getMountManager(),
                                \OC\Files\Filesystem::getLoader(),
-                               \OC::$server->getUserSession(),
-                               \OC::$server->getHTTPHelper()
+                               \OC::$server->getHTTPHelper(),
+                               $params['user']
                );
+
                $externalManager->setupMounts();
        }
 
        protected function stripPath($path) {
-               $prefix = '/' . $this->userSession->getUser()->getUID() . '/files';
+               $prefix = '/' . $this->uid . '/files';
                return rtrim(substr($path, strlen($prefix)), '/');
        }
 
@@ -196,11 +196,10 @@ class Manager {
         * @return Mount
         */
        protected function mountShare($data) {
-               $user = $this->userSession->getUser();
                $data['manager'] = $this;
-               $mountPoint = '/' . $user->getUID() . '/files' . $data['mountpoint'];
+               $mountPoint = '/' . $this->uid . '/files' . $data['mountpoint'];
                $data['mountpoint'] = $mountPoint;
-               $data['certificateManager'] = \OC::$server->getCertificateManager($user);
+               $data['certificateManager'] = \OC::$server->getCertificateManager(\OC::$server->getUserSession()->getUser());
                $mount = new Mount(self::STORAGE, $mountPoint, $data, $this, $this->storageLoader);
                $this->mountManager->addMount($mount);
                return $mount;
@@ -219,7 +218,6 @@ class Manager {
         * @return bool
         */
        public function setMountPoint($source, $target) {
-               $user = $this->userSession->getUser();
                $source = $this->stripPath($source);
                $target = $this->stripPath($target);
                $sourceHash = md5($source);
@@ -231,13 +229,12 @@ class Manager {
                        WHERE `mountpoint_hash` = ?
                        AND `user` = ?
                ');
-               $result = (bool)$query->execute(array($target, $targetHash, $sourceHash, $user->getUID()));
+               $result = (bool)$query->execute(array($target, $targetHash, $sourceHash, $this->uid));
 
                return $result;
        }
 
        public function removeShare($mountPoint) {
-               $user = $this->userSession->getUser();
                $mountPoint = $this->stripPath($mountPoint);
                $hash = md5($mountPoint);
 
@@ -245,7 +242,7 @@ class Manager {
                        SELECT `remote`, `share_token`, `remote_id`
                        FROM  `*PREFIX*share_external`
                        WHERE `mountpoint_hash` = ? AND `user` = ?');
-               $result = $getShare->execute(array($hash, $user->getUID()));
+               $result = $getShare->execute(array($hash, $this->uid));
 
                if ($result) {
                        $share = $getShare->fetch();
@@ -257,7 +254,7 @@ class Manager {
                        WHERE `mountpoint_hash` = ?
                        AND `user` = ?
                ');
-               return (bool)$query->execute(array($hash, $user->getUID()));
+               return (bool)$query->execute(array($hash, $this->uid));
        }
 
        /**
@@ -294,7 +291,7 @@ class Manager {
         */
        public function getOpenShares() {
                $openShares = $this->connection->prepare('SELECT * FROM `*PREFIX*share_external` WHERE `accepted` = ? AND `user` = ?');
-               $result = $openShares->execute(array(0, $this->userSession->getUser()->getUID()));
+               $result = $openShares->execute(array(0, $this->uid));
 
                return $result ? $openShares->fetchAll() : array();