public function generateFileToken($fileId, $version) { // Get the FS view of the current user. $view = \OC\Files\Filesystem::getView(); // Get the virtual path (if the file is shared). $path = $view->getPath($fileId); if (!$view->is_file($path) || !$view->isUpdatable($path)) { throw new \Exception('Invalid fileId.'); } // Figure out the real owner, if not us. $owner = $view->getOwner($path); // Create a view into the owner's FS. $view = new \OC\Files\View('/' . $owner . '/files'); // Find the real path. $path = $view->getPath($fileId); if (!$view->is_file($path)) { throw new \Exception('Invalid fileId.'); } $editor = \OC::$server->getUserSession()->getUser()->getUID(); $token = \OC::$server->getSecureRandom()->getMediumStrengthGenerator()->generate(32, \OCP\Security\ISecureRandom::CHAR_LOWER . \OCP\Security\ISecureRandom::CHAR_UPPER . \OCP\Security\ISecureRandom::CHAR_DIGITS); \OC::$server->getLogger()->debug('Issuing token for {editor} file {fileId}, version {version} owned by {owner}, path {path}: {token}', ['owner' => $owner, 'editor' => $editor, 'fileId' => $fileId, 'version' => $version, 'path' => $path, 'token' => $token]); $wopi = new \OCA\Richdocuments\Db\Wopi([$owner, $editor, $fileId, $version, $path, $token, time() + self::TOKEN_LIFETIME_SECONDS]); if (!$wopi->insert()) { throw new \Exception('Failed to add wopi token into database'); } return $token; }
/** * get itemType * @param string $path * @return string type 'file', 'folder' or null of file/folder doesn't exists */ private static function getItemType($path) { $view = new \OC\Files\View('/' . \OCP\User::getUser() . '/files'); $itemType = null; if ($view->is_dir($path)) { $itemType = "folder"; } elseif ($view->is_file($path)) { $itemType = "file"; } return $itemType; }