From 0e9ebcd4ce1823d47538e6579f1753929541474c Mon Sep 17 00:00:00 2001 From: pprossi Date: Tue, 16 Jan 2018 16:24:28 +0100 Subject: [PATCH 1/3] ability to set download name over file properties TODO: maybe needs to be checked if the correkt extension is added in download name --- Classes/Hooks/FileDumpHook.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Classes/Hooks/FileDumpHook.php b/Classes/Hooks/FileDumpHook.php index d850dcd..85fe750 100644 --- a/Classes/Hooks/FileDumpHook.php +++ b/Classes/Hooks/FileDumpHook.php @@ -201,7 +201,7 @@ protected function dumpFileContents($file, $asDownload, $resumableDownload) } $contentDisposition = $asDownload ? 'attachment' : 'inline'; - header('Content-Disposition: ' . $contentDisposition . '; filename="' . $file->getName() . '"'); + header('Content-Disposition: ' . $contentDisposition . '; filename="' . ( $file->getProperty('download_name') ? $file->getProperty('download_name') : $file->getName() ) . '"'); header('Content-Type: ' . $file->getMimeType()); header('Expires: -1'); header('Cache-Control: public, must-revalidate, post-check=0, pre-check=0'); From ccb8b840830651331506de29c851020f21f99210 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rossi=2C=20Ren=C3=A9?= Date: Tue, 10 Dec 2019 09:31:48 +0100 Subject: [PATCH 2/3] Update Fork to Master --- Classes/Aspects/PublicUrlAspect.php | 12 +- .../Configuration/ExtensionConfiguration.php | 13 ++- Classes/ContextMenu/ItemProvider.php | 106 ++++++++++++++++++ Classes/Controller/BePublicUrlController.php | 17 +-- .../Repository/ProcessedFileRepository.php | 18 ++- Classes/FormEngine/DownloadStatistics.php | 52 +++------ Classes/Hooks/AbstractBeButtons.php | 10 +- Classes/Hooks/ClickMenuOptions.php | 92 --------------- Classes/Hooks/CmsLayout.php | 6 +- Classes/Hooks/DocHeaderButtonsHook.php | 5 +- Classes/Hooks/FileDumpHook.php | 64 ++++++----- Classes/Service/Utility.php | 40 ++----- Classes/ViewHelpers/LeaveStateViewHelper.php | 25 +++-- .../Security/AssetAccessViewHelper.php | 19 +++- Configuration/Backend/AjaxRoutes.php | 7 ++ .../TCA/Overrides/sys_file_metadata.php | 9 +- .../TCA/tx_falsecuredownload_folder.php | 9 +- Documentation/Images/secure-file-storage.png | Bin 76174 -> 50990 bytes .../Images/set-folder-permissions.png | Bin 29182 -> 12920 bytes .../Images/set-folder-permissions2.png | Bin 0 -> 8124 bytes Documentation/Misc/Index.rst | 15 +++ README.rst => README.md | 19 ++-- .../Public/JavaScript/ContextMenuActions.js | 47 ++++++++ composer.json | 4 +- ext_emconf.php | 4 +- ext_localconf.php | 8 +- ext_tables.php | 7 -- 27 files changed, 335 insertions(+), 273 deletions(-) create mode 100644 Classes/ContextMenu/ItemProvider.php delete mode 100644 Classes/Hooks/ClickMenuOptions.php create mode 100644 Configuration/Backend/AjaxRoutes.php create mode 100644 Documentation/Images/set-folder-permissions2.png rename README.rst => README.md (82%) create mode 100644 Resources/Public/JavaScript/ContextMenuActions.js diff --git a/Classes/Aspects/PublicUrlAspect.php b/Classes/Aspects/PublicUrlAspect.php index c1f43a5..1313e0e 100644 --- a/Classes/Aspects/PublicUrlAspect.php +++ b/Classes/Aspects/PublicUrlAspect.php @@ -25,7 +25,7 @@ ***************************************************************/ use TYPO3\CMS\Core\Resource; -use TYPO3\CMS\Backend\Utility\BackendUtility; +use TYPO3\CMS\Backend\Routing\UriBuilder; use TYPO3\CMS\Core\SingletonInterface; use TYPO3\CMS\Core\Utility\GeneralUtility; @@ -90,17 +90,17 @@ public function generatePublicUrl( $queryParameterArray['p'] = $resourceObject->getUid(); $queryParameterArray['t'] = 'p'; } - $queryParameterArray['token'] = GeneralUtility::hmac( + $queryParameterArray['fal_token'] = GeneralUtility::hmac( implode('|', $queryParameterArray), 'BeResourceStorageDumpFile' ); // $urlData['publicUrl'] is passed by reference, so we can change that here and the value will be taken into account - $urlData['publicUrl'] = BackendUtility::getAjaxUrl( - 'FalSecuredownload::publicUrl', + $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class); + $urlData['publicUrl'] = (string) $uriBuilder->buildUriFromRoute( + 'ajax_dump_file', $queryParameterArray, - false, - true + UriBuilder::ABSOLUTE_URL ); } } diff --git a/Classes/Configuration/ExtensionConfiguration.php b/Classes/Configuration/ExtensionConfiguration.php index 364eb63..83f6b80 100644 --- a/Classes/Configuration/ExtensionConfiguration.php +++ b/Classes/Configuration/ExtensionConfiguration.php @@ -25,6 +25,9 @@ namespace BeechIt\FalSecuredownload\Configuration; +use TYPO3\CMS\Core\Configuration\ExtensionConfiguration as ExtensionConfigurationCore; +use TYPO3\CMS\Core\Utility\GeneralUtility; + /** * Wrapper for the extension configuration */ @@ -42,14 +45,18 @@ private static function init() { if (!self::$isInitialized) { self::$isInitialized = true; - - $extensionConfig = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['fal_securedownload']); + if (class_exists(ExtensionConfigurationCore::class)) { + $extensionConfig = GeneralUtility::makeInstance(ExtensionConfigurationCore::class)->get('fal_securedownload'); + } else { + // Fallback for 8LTS + $extensionConfig = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['fal_securedownload']); + } self::$loginRedirectUrl = $extensionConfig['login_redirect_url']; self::$noAccessRedirectUrl = $extensionConfig['no_access_redirect_url']; self::$forceDownload = (bool)$extensionConfig['force_download']; self::$forceDownloadForExt = $extensionConfig['force_download_for_ext']; self::$trackDownloads = (bool)$extensionConfig['track_downloads']; - self::$resumableDownload = (bool)(isset($extensionConfig['resumable_download']) ? $extensionConfig['resumable_download'] : false); + self::$resumableDownload = (isset($extensionConfig['resumable_download']) ? (bool)$extensionConfig['resumable_download'] : false); } } diff --git a/Classes/ContextMenu/ItemProvider.php b/Classes/ContextMenu/ItemProvider.php new file mode 100644 index 0000000..8cb5684 --- /dev/null +++ b/Classes/ContextMenu/ItemProvider.php @@ -0,0 +1,106 @@ +table === 'sys_file' || $this->table === 'sys_file_storage'; + } + + /** + * Initialize file object + */ + protected function initialize() + { + parent::initialize(); + $resource = ResourceFactory::getInstance() + ->retrieveFileOrFolderObject($this->identifier); + + if ($resource instanceof Folder + && !$resource->getStorage()->isPublic() + && in_array( + $resource->getRole(), + [Folder::ROLE_DEFAULT, Folder::ROLE_USERUPLOAD], + true + ) + ) { + $this->folder = $resource; + } + } + + /** + * Adds the folder permission menu item for folder of a non-public storage + * + * @param array $items + * @return array + */ + public function addItems(array $items): array + { + $this->initialize(); + if ($this->folder instanceof Folder) { + + $items += $this->prepareItems([ + 'permissions_divider' => [ + 'type' => 'divider', + ], + 'permissions' => [ + 'label' => 'LLL:EXT:fal_securedownload/Resources/Private/Language/locallang_be.xlf:clickmenu.folderpermissions', + 'iconIdentifier' => 'action-folder', + 'callbackAction' => 'folderPermissions' + ] + ]); + } + + return $items; + } + + /** + * @param string $itemName + * @return array + */ + protected function getAdditionalAttributes(string $itemName): array + { + /** @var Utility $utility */ + $utility = GeneralUtility::makeInstance(Utility::class); + $folderRecord = $utility->getFolderRecord($this->folder); + + return [ + 'data-callback-module' => 'TYPO3/CMS/FalSecuredownload/ContextMenuActions', + 'data-folder-record-uid' => $folderRecord['uid'] ?? 0, + 'data-storage' => $this->folder->getStorage()->getUid(), + 'data-folder' => $this->folder->getIdentifier(), + 'data-folder-hash' => $this->folder->getHashedIdentifier(), + ]; + } +} \ No newline at end of file diff --git a/Classes/Controller/BePublicUrlController.php b/Classes/Controller/BePublicUrlController.php index d416143..6982cc7 100644 --- a/Classes/Controller/BePublicUrlController.php +++ b/Classes/Controller/BePublicUrlController.php @@ -7,7 +7,8 @@ * All code (c) Beech Applications B.V. all rights reserved */ -use TYPO3\CMS\Core\Http\AjaxRequestHandler; +use Psr\Http\Message\ResponseInterface; +use Psr\Http\Message\ServerRequestInterface; use TYPO3\CMS\Core\Resource\ProcessedFileRepository; use TYPO3\CMS\Core\Resource\ResourceFactory; use TYPO3\CMS\Core\Utility\GeneralUtility; @@ -18,15 +19,14 @@ */ class BePublicUrlController { - /** * Dump file content * Copy from /sysext/core/Resources/PHP/FileDumpEID.php - * - * @param array $params - * @param AjaxRequestHandler $ajaxObj + * @param ServerRequestInterface $request + * @param ResponseInterface $response + * @return ResponseInterface */ - public function dumpFile($params = [], AjaxRequestHandler $ajaxObj = null) + public function dumpFile(ServerRequestInterface $request, ResponseInterface $response) { $parameters = ['eID' => 'dumpFile']; if (GeneralUtility::_GP('t')) { @@ -40,7 +40,7 @@ public function dumpFile($params = [], AjaxRequestHandler $ajaxObj = null) } if (GeneralUtility::hmac(implode('|', $parameters), - 'BeResourceStorageDumpFile') === GeneralUtility::_GP('token') + 'BeResourceStorageDumpFile') === GeneralUtility::_GP('fal_token') ) { if (isset($parameters['f'])) { $file = ResourceFactory::getInstance()->getFileObject($parameters['f']); @@ -52,7 +52,7 @@ public function dumpFile($params = [], AjaxRequestHandler $ajaxObj = null) /** @var \TYPO3\CMS\Core\Resource\ProcessedFile $file */ $file = GeneralUtility::makeInstance(ProcessedFileRepository::class)->findByUid($parameters['p']); if ($file->isDeleted()) { - $file = null; + HttpUtility::setResponseCodeAndExit(HttpUtility::HTTP_STATUS_404); } $orgFile = $file->getOriginalFile(); } @@ -68,6 +68,7 @@ public function dumpFile($params = [], AjaxRequestHandler $ajaxObj = null) ob_start(); $file->getStorage()->dumpFileContents($file); + exit; } else { HttpUtility::setResponseCodeAndExit(HttpUtility::HTTP_STATUS_403); diff --git a/Classes/Domain/Repository/ProcessedFileRepository.php b/Classes/Domain/Repository/ProcessedFileRepository.php index 7193616..e725fc3 100644 --- a/Classes/Domain/Repository/ProcessedFileRepository.php +++ b/Classes/Domain/Repository/ProcessedFileRepository.php @@ -50,17 +50,13 @@ public function findByUid($uid) throw new \InvalidArgumentException('uid has to be integer.', 1316779798); } - if (version_compare(TYPO3_branch, '8.7', '>=')) { - $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->table); - $row = $queryBuilder - ->select('*') - ->from($this->table) - ->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter((int)$uid, \PDO::PARAM_INT))) - ->execute() - ->fetch(); - } else { - $row = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow('*', $this->table, 'uid=' . (int)$uid); - } + $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->table); + $row = $queryBuilder + ->select('*') + ->from($this->table) + ->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter((int)$uid, \PDO::PARAM_INT))) + ->execute() + ->fetch(); if (empty($row) || !is_array($row)) { throw new \RuntimeException( diff --git a/Classes/FormEngine/DownloadStatistics.php b/Classes/FormEngine/DownloadStatistics.php index 314a1d7..7d7d3f1 100644 --- a/Classes/FormEngine/DownloadStatistics.php +++ b/Classes/FormEngine/DownloadStatistics.php @@ -27,7 +27,6 @@ use TYPO3\CMS\Backend\Form\AbstractNode; use TYPO3\CMS\Core\Database\ConnectionPool; -use TYPO3\CMS\Core\Database\DatabaseConnection; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Core\Utility\MathUtility; use TYPO3\CMS\Lang\LanguageService; @@ -51,33 +50,22 @@ public function render() return $this->resultArray; } - if (version_compare(TYPO3_branch, '8.7', '>=')) { - $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_file'); - $statistics = $queryBuilder - ->selectLiteral( - $queryBuilder->getConnection()->getDatabasePlatform()->getCountExpression( - $queryBuilder->quoteIdentifier('tx_falsecuredownload_download.file') - ) . ' AS ' . $queryBuilder->quoteIdentifier('cnt')) - ->addSelect('sys_file.name') - ->from('sys_file') - ->join('sys_file', 'tx_falsecuredownload_download', 'tx_falsecuredownload_download', - $queryBuilder->expr()->eq('tx_falsecuredownload_download.file', $queryBuilder->quoteIdentifier('sys_file.uid')) - ) - ->where($queryBuilder->expr()->eq('tx_falsecuredownload_download.feuser', $queryBuilder->createNamedParameter((int)$row['uid'], \PDO::PARAM_INT))) - ->groupBy('sys_file.name') - ->orderBy('sys_file.name') - ->execute() - ->fetchAll(); - } else { - $db = $this->getDatabase(); - $statistics = $db->exec_SELECTgetRows( - 'sys_file.name, count(tx_falsecuredownload_download.file) as cnt', - 'sys_file JOIN tx_falsecuredownload_download ON tx_falsecuredownload_download.file = sys_file.uid - AND tx_falsecuredownload_download.feuser = ' . (int)$row['uid'], - '', - 'sys_file.name' - ); - } + $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_file'); + $statistics = $queryBuilder + ->selectLiteral( + $queryBuilder->getConnection()->getDatabasePlatform()->getCountExpression( + $queryBuilder->quoteIdentifier('tx_falsecuredownload_download.file') + ) . ' AS ' . $queryBuilder->quoteIdentifier('cnt')) + ->addSelect('sys_file.name') + ->from('sys_file') + ->join('sys_file', 'tx_falsecuredownload_download', 'tx_falsecuredownload_download', + $queryBuilder->expr()->eq('tx_falsecuredownload_download.file', $queryBuilder->quoteIdentifier('sys_file.uid')) + ) + ->where($queryBuilder->expr()->eq('tx_falsecuredownload_download.feuser', $queryBuilder->createNamedParameter((int)$row['uid'], \PDO::PARAM_INT))) + ->groupBy('sys_file.name') + ->orderBy('sys_file.name') + ->execute() + ->fetchAll(); $lang = $this->getLanguageService(); $markup = []; @@ -110,12 +98,4 @@ protected function getLanguageService() { return $GLOBALS['LANG']; } - - /** - * @return DatabaseConnection - */ - protected function getDatabase() - { - return $GLOBALS['TYPO3_DB']; - } } diff --git a/Classes/Hooks/AbstractBeButtons.php b/Classes/Hooks/AbstractBeButtons.php index 7c6b732..15ac193 100644 --- a/Classes/Hooks/AbstractBeButtons.php +++ b/Classes/Hooks/AbstractBeButtons.php @@ -25,18 +25,18 @@ ***************************************************************/ use BeechIt\FalSecuredownload\Service\Utility; +use TYPO3\CMS\Backend\Routing\UriBuilder; use TYPO3\CMS\Core\Imaging\Icon; use TYPO3\CMS\Core\Imaging\IconFactory; use TYPO3\CMS\Core\Resource\Exception\InsufficientFolderAccessPermissionsException; use TYPO3\CMS\Core\Resource\Exception\ResourceDoesNotExistException; use TYPO3\CMS\Core\Resource\Folder; use TYPO3\CMS\Core\Resource\ResourceFactory; -use TYPO3\CMS\Backend\Utility\BackendUtility; use TYPO3\CMS\Core\Utility\GeneralUtility; /** - * Abstract utility class for classes that want to add album add/edit buttons - * somewhere like a ClickMenuOptions class. + * Abstract utility class for classes that want to add BE buttons + * to edit folder permissions */ abstract class AbstractBeButtons { @@ -153,7 +153,9 @@ protected function buildAddUrl(Folder $folder) protected function buildUrl(array $parameters) { $parameters['returnUrl'] = GeneralUtility::getIndpEnv('REQUEST_URI'); - return BackendUtility::getModuleUrl('record_edit', $parameters); + $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class); + + return $uriBuilder->buildUriFromRoute('record_edit', $parameters); } /** diff --git a/Classes/Hooks/ClickMenuOptions.php b/Classes/Hooks/ClickMenuOptions.php deleted file mode 100644 index 2a813fa..0000000 --- a/Classes/Hooks/ClickMenuOptions.php +++ /dev/null @@ -1,92 +0,0 @@ - - * All rights reserved - * - * This script is part of the TYPO3 project. The TYPO3 project is - * free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * The GNU General Public License can be found at - * http://www.gnu.org/copyleft/gpl.html. - * - * This script 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 General Public License for more details. - * - * This copyright notice MUST APPEAR in all copies of the script! - ***************************************************************/ - -use TYPO3\CMS\Backend\ClickMenu\ClickMenu; -use TYPO3\CMS\Core\Authentication\BackendUserAuthentication; - -/** - * Add ClickMenuOptions in file list - */ -class ClickMenuOptions extends AbstractBeButtons -{ - /** - * @var ClickMenu - */ - protected $parentObject; - - /** - * Add create tx_ icon to filemenu - * - * @param ClickMenu $parentObject Back-reference to the calling object - * @param array $menuItems Current list of menu items - * @param string $combinedIdentifier The combined identifier - * @param integer $uid Id of the clicked on item - * @return array Modified list of menu items - */ - public function main(ClickMenu $parentObject, $menuItems, $combinedIdentifier, $uid) - { - - if (!$parentObject->isDBmenu) { - $this->parentObject = $parentObject; - $combinedIdentifier = rawurldecode($combinedIdentifier); - - $extraMenuItems = $this->generateButtons($combinedIdentifier); - if (count($extraMenuItems)) { - $menuItems[] = 'spacer'; - $menuItems = array_merge($menuItems, $extraMenuItems); - } - } - - return $menuItems; - } - - /** - * Create click menu item - * - * @param string $title - * @param string $shortTitle - * @param string $icon - * @param string $url - * @param bool $addReturnUrl - * @return string|array - */ - protected function createLink($title, $shortTitle, $icon, $url, $addReturnUrl = true) - { - - if (strpos($url, 'alert') !== 0) { - $url = $this->parentObject->urlRefForCM($url, $addReturnUrl ? 'returnUrl' : ''); - } - - /** @var BackendUserAuthentication $beUser */ - $beUser = $GLOBALS['BE_USER']; - - return $this->parentObject->linkItem( - '' . $shortTitle . '', - !empty($beUser->uc['noMenuMode']) && $beUser->uc['noMenuMode'] !== 'icons' ? '' : ' ' . $icon, - $url - ); - } -} diff --git a/Classes/Hooks/CmsLayout.php b/Classes/Hooks/CmsLayout.php index cbc94f1..53f0d9e 100644 --- a/Classes/Hooks/CmsLayout.php +++ b/Classes/Hooks/CmsLayout.php @@ -137,15 +137,13 @@ protected function getFieldFromFlexform($key, $sheet = 'sDEF') * * @param string $key * @param string $languageFile - * @param bool $hsc If set, the return value is htmlspecialchar'ed * @return string */ protected function sL( $key, - $languageFile = 'LLL:EXT:fal_securedownload/Resources/Private/Language/locallang_be.xlf', - $hsc = true + $languageFile = 'LLL:EXT:fal_securedownload/Resources/Private/Language/locallang_be.xlf' ) { - return $this->getLangService()->sL($languageFile . ':' . $key, $hsc); + return $this->getLangService()->sL($languageFile . ':' . $key); } /** diff --git a/Classes/Hooks/DocHeaderButtonsHook.php b/Classes/Hooks/DocHeaderButtonsHook.php index ce0bd2d..6d5a6ee 100644 --- a/Classes/Hooks/DocHeaderButtonsHook.php +++ b/Classes/Hooks/DocHeaderButtonsHook.php @@ -1,4 +1,5 @@ = 9LTS + ) { foreach ($this->generateButtons(GeneralUtility::_GP('id')) as $buttonInfo) { $button = $buttonBar->makeLinkButton(); $button->setIcon($buttonInfo['icon']); diff --git a/Classes/Hooks/FileDumpHook.php b/Classes/Hooks/FileDumpHook.php index 85fe750..cd02f04 100644 --- a/Classes/Hooks/FileDumpHook.php +++ b/Classes/Hooks/FileDumpHook.php @@ -28,9 +28,9 @@ use BeechIt\FalSecuredownload\Configuration\ExtensionConfiguration; use BeechIt\FalSecuredownload\Security\CheckPermissions; use TYPO3\CMS\Core\Database\ConnectionPool; -use TYPO3\CMS\Core\Database\DatabaseConnection; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\FileInterface; +use TYPO3\CMS\Core\Resource\FileReference; use TYPO3\CMS\Core\Resource\Hook\FileDumpEIDHookInterface; use TYPO3\CMS\Core\Resource\ResourceInterface; use TYPO3\CMS\Core\Utility\GeneralUtility; @@ -138,13 +138,13 @@ public function checkFileAccess(ResourceInterface $file) if ($this->loginRedirectUrl !== null) { $this->redirectToUrl($this->loginRedirectUrl); } else { - $this->exitScript('Authentication required!', 401); + $this->exitScript('Authentication required!'); } } else { if ($this->noAccessRedirectUrl !== null) { $this->redirectToUrl($this->noAccessRedirectUrl); } else { - $this->exitScript('No access!', 403); + $this->exitScript('No access!'); } } } @@ -161,25 +161,22 @@ public function checkFileAccess(ResourceInterface $file) 'file' => (int)$this->originalFile->getUid() ]; - if (version_compare(TYPO3_branch, '8.7', '>=')) { - GeneralUtility::makeInstance(ConnectionPool::class) - ->getConnectionForTable('tx_falsecuredownload_download') - ->insert( - 'tx_falsecuredownload_download', - $columns, - [\PDO::PARAM_INT, \PDO::PARAM_INT, \PDO::PARAM_INT, \PDO::PARAM_INT] - ); - - } else { - $db = $this->getDatabase(); - $db->exec_INSERTquery('tx_falsecuredownload_download', $columns); - } + GeneralUtility::makeInstance(ConnectionPool::class) + ->getConnectionForTable('tx_falsecuredownload_download') + ->insert( + 'tx_falsecuredownload_download', + $columns, + [\PDO::PARAM_INT, \PDO::PARAM_INT, \PDO::PARAM_INT, \PDO::PARAM_INT] + ); } - if ($this->forceDownload($this->originalFile->getExtension())) { - $this->dumpFileContents($this->originalFile, true, $this->resumableDownload); + // Dump the precise requested file for File and ProcessedFile, but dump the referenced file for FileReference + $dumpFile = $file instanceof FileReference ? $file->getOriginalFile() : $file; + + if ($this->forceDownload($dumpFile->getExtension())) { + $this->dumpFileContents($dumpFile, true, $this->resumableDownload); } elseif ($this->resumableDownload) { - $this->dumpFileContents($this->originalFile, false, true); + $this->dumpFileContents($dumpFile, false, true); } } @@ -195,13 +192,21 @@ public function checkFileAccess(ResourceInterface $file) */ protected function dumpFileContents($file, $asDownload, $resumableDownload) { + $downloadName = $file->getProperty('download_name') ?: $file->getName(); + + // Make sure downloadName has a file extension + $fileParts = pathinfo($downloadName); + if (empty($fileParts['extension'])) { + $downloadName .= '.' . $file->getExtension(); + } + if (!$resumableDownload) { - $file->getStorage()->dumpFileContents($file, $asDownload); + $file->getStorage()->dumpFileContents($file, $asDownload, $downloadName); exit; } $contentDisposition = $asDownload ? 'attachment' : 'inline'; - header('Content-Disposition: ' . $contentDisposition . '; filename="' . ( $file->getProperty('download_name') ? $file->getProperty('download_name') : $file->getName() ) . '"'); + header('Content-Disposition: ' . $contentDisposition . '; filename="' . $downloadName . '"'); header('Content-Type: ' . $file->getMimeType()); header('Expires: -1'); header('Cache-Control: public, must-revalidate, post-check=0, pre-check=0'); @@ -213,6 +218,13 @@ protected function dumpFileContents($file, $asDownload, $resumableDownload) header('Content-Range: bytes */' . $fileSize); exit; } + + // Find part of file and push this out + $filePointer = @fopen($file->getForLocalProcessing(false), 'rb'); + if ($filePointer === false) { + header('HTTP/1.1 404 File not found'); + exit; + } $dumpSize = $fileSize; list($begin, $end) = $range; @@ -230,8 +242,6 @@ protected function dumpFileContents($file, $asDownload, $resumableDownload) ob_end_clean(); } - // Find part of file and push this out - $filePointer = @fopen($file->getForLocalProcessing(false), 'rb'); fseek($filePointer, $begin); $dumpedSize = 0; while (!feof($filePointer) && $dumpedSize < $dumpSize) { @@ -340,14 +350,6 @@ protected function redirectToUrl($url) exit; } - /** - * @return DatabaseConnection - */ - protected function getDatabase() - { - return $GLOBALS['TYPO3_DB']; - } - /** * Determines the HTTP range given in the request * diff --git a/Classes/Service/Utility.php b/Classes/Service/Utility.php index 1430df6..9fd491a 100644 --- a/Classes/Service/Utility.php +++ b/Classes/Service/Utility.php @@ -54,7 +54,7 @@ public function __construct() * Get folder configuration record * * @param Folder $folder - * @return array + * @return array|false */ public function getFolderRecord(Folder $folder) { @@ -62,27 +62,15 @@ public function getFolderRecord(Folder $folder) if (!isset(self::$folderRecordCache[$folder->getCombinedIdentifier()]) || !array_key_exists($folder->getCombinedIdentifier(), self::$folderRecordCache) ) { - if (version_compare(TYPO3_branch, '8.7', '>=')) { - - $queryBuilder = $this->getQueryBuilder(); - $record = $queryBuilder - ->select('*') - ->from('tx_falsecuredownload_folder') - ->where($queryBuilder->expr()->eq('storage', $queryBuilder->createNamedParameter((int)$folder->getStorage()->getUid(), \PDO::PARAM_INT))) - ->andWhere($queryBuilder->expr()->eq('folder_hash', $queryBuilder->createNamedParameter($folder->getHashedIdentifier(), \PDO::PARAM_STR))) - ->execute() - ->fetch(); - - } else { - - $record = $this->getDatabase()->exec_SELECTgetSingleRow( - '*', - 'tx_falsecuredownload_folder', - 'storage = ' . (int)$folder->getStorage()->getUid() . ' - AND folder_hash = ' . $this->getDatabase()->fullQuoteStr($folder->getHashedIdentifier(), 'tx_falsecuredownload_folder') - ); + $queryBuilder = $this->getQueryBuilder(); + $record = $queryBuilder + ->select('*') + ->from('tx_falsecuredownload_folder') + ->where($queryBuilder->expr()->eq('storage', $queryBuilder->createNamedParameter((int)$folder->getStorage()->getUid(), \PDO::PARAM_INT))) + ->andWhere($queryBuilder->expr()->eq('folder_hash', $queryBuilder->createNamedParameter($folder->getHashedIdentifier(), \PDO::PARAM_STR))) + ->execute() + ->fetch(); - } // cache results self::$folderRecordCache[$folder->getCombinedIdentifier()] = $record; } @@ -170,16 +158,6 @@ public function deleteFolderRecord($storageUid, $folderHash, $identifier) } } - /** - * Gets the database object. - * - * @return \TYPO3\CMS\Core\Database\DatabaseConnection - */ - protected function getDatabase() - { - return $GLOBALS['TYPO3_DB']; - } - /** * Gets a query build * diff --git a/Classes/ViewHelpers/LeaveStateViewHelper.php b/Classes/ViewHelpers/LeaveStateViewHelper.php index bbac1f7..75dd495 100644 --- a/Classes/ViewHelpers/LeaveStateViewHelper.php +++ b/Classes/ViewHelpers/LeaveStateViewHelper.php @@ -44,23 +44,30 @@ public function initializeArguments() } /** - * renders child if the current visitor ... - * otherwise renders child. - - * @return string + * @param array $arguments + * @return bool */ - public function render() + protected static function evaluateCondition($arguments = null) { /** @var Folder $folder */ - $folder = $this->arguments['folder']; + $folder = $arguments['folder']; $leafStateService = GeneralUtility::makeInstance(LeafStateService::class); $feUser = !empty($GLOBALS['TSFE']) ? $GLOBALS['TSFE']->fe_user : false; - if ($feUser && $leafStateService->getLeafStateForUser($feUser, $folder->getCombinedIdentifier())) { + return $feUser && $leafStateService->getLeafStateForUser($feUser, $folder->getCombinedIdentifier()); + } + + /** + * Renders child if $condition is true, otherwise renders child. + * + * @return string the rendered string + */ + public function render() + { + if (static::evaluateCondition($this->arguments)) { return $this->renderThenChild(); - } else { - return $this->renderElseChild(); } + return $this->renderElseChild(); } } diff --git a/Classes/ViewHelpers/Security/AssetAccessViewHelper.php b/Classes/ViewHelpers/Security/AssetAccessViewHelper.php index 10072a6..0b4ced3 100644 --- a/Classes/ViewHelpers/Security/AssetAccessViewHelper.php +++ b/Classes/ViewHelpers/Security/AssetAccessViewHelper.php @@ -24,6 +24,7 @@ * This copyright notice MUST APPEAR in all copies of the script! ***************************************************************/ +use TYPO3\CMS\Core\Context\Context; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Core\Resource\Folder; use TYPO3\CMS\Core\Resource\File; @@ -92,13 +93,23 @@ protected static function evaluateCondition($arguments = null) /** * Determines whether the currently logged in FE user belongs to the specified usergroup * - * @return boolean|array FALSE when not logged in or else $GLOBALS['TSFE']->fe_user->groupData['uid'] + * @return boolean|array FALSE when not logged in or else frontend.user.groupIds */ protected static function getFeUserGroups() { - if (!isset($GLOBALS['TSFE']) || !$GLOBALS['TSFE']->loginUser) { - return false; + if (class_exists(Context::class)) { + $context = GeneralUtility::makeInstance(Context::class); + if (!$context->getPropertyFromAspect('frontend.user', 'isLoggedIn')) { + return false; + } + return $context->getPropertyFromAspect('frontend.user', 'groupIds'); + } else { + // Fallback for 8LTS + if (!isset($GLOBALS['TSFE']) || !$GLOBALS['TSFE']->loginUser) { + return false; + } + return $GLOBALS['TSFE']->fe_user->groupData['uid']; } - return $GLOBALS['TSFE']->fe_user->groupData['uid']; + } } \ No newline at end of file diff --git a/Configuration/Backend/AjaxRoutes.php b/Configuration/Backend/AjaxRoutes.php new file mode 100644 index 0000000..8e6ec4f --- /dev/null +++ b/Configuration/Backend/AjaxRoutes.php @@ -0,0 +1,7 @@ + [ + 'path' => '/fal_securedownloads/dump_file', + 'target' => BeechIt\FalSecuredownload\Controller\BePublicUrlController::class . '::dumpFile' + ] +]; diff --git a/Configuration/TCA/Overrides/sys_file_metadata.php b/Configuration/TCA/Overrides/sys_file_metadata.php index 8003803..431f767 100644 --- a/Configuration/TCA/Overrides/sys_file_metadata.php +++ b/Configuration/TCA/Overrides/sys_file_metadata.php @@ -4,7 +4,7 @@ $additionalColumns = [ 'fe_groups' => [ 'exclude' => true, - 'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.fe_group', + 'label' => 'LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.fe_group', 'config' => [ 'type' => 'select', 'renderType' => 'selectMultipleSideBySide', @@ -12,17 +12,18 @@ 'maxitems' => 20, 'items' => [ [ - 'LLL:EXT:lang/locallang_general.xlf:LGL.any_login', + 'LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.any_login', -2 ], [ - 'LLL:EXT:lang/locallang_general.xlf:LGL.usergroups', + 'LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.usergroups', '--div--' ] ], 'exclusiveKeys' => '-1,-2', 'foreign_table' => 'fe_groups', - 'foreign_table_where' => 'ORDER BY fe_groups.title' + 'foreign_table_where' => 'ORDER BY fe_groups.title', + 'enableMultiSelectFilterTextfield' => true, ] ] ]; diff --git a/Configuration/TCA/tx_falsecuredownload_folder.php b/Configuration/TCA/tx_falsecuredownload_folder.php index 38bcd37..5de07ff 100644 --- a/Configuration/TCA/tx_falsecuredownload_folder.php +++ b/Configuration/TCA/tx_falsecuredownload_folder.php @@ -59,7 +59,7 @@ ], 'fe_groups' => [ 'exclude' => false, - 'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.fe_group', + 'label' => 'LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.fe_group', 'config' => [ 'type' => 'select', 'renderType' => 'selectMultipleSideBySide', @@ -67,17 +67,18 @@ 'maxitems' => 40, 'items' => [ [ - 'LLL:EXT:lang/locallang_general.xlf:LGL.any_login', + 'LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.any_login', -2 ], [ - 'LLL:EXT:lang/locallang_general.xlf:LGL.usergroups', + 'LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.usergroups', '--div--' ] ], 'exclusiveKeys' => '-1,-2', 'foreign_table' => 'fe_groups', - 'foreign_table_where' => 'ORDER BY fe_groups.title' + 'foreign_table_where' => 'ORDER BY fe_groups.title', + 'enableMultiSelectFilterTextfield' => true, ] ] ] diff --git a/Documentation/Images/secure-file-storage.png b/Documentation/Images/secure-file-storage.png index cff8ad69dee47d45426cbd7e47b1352d5a538e73..8074d758fe8a1a25f16e336260e5790d655cd3c2 100644 GIT binary patch literal 50990 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 J@%4MY{{yhHL#F@$ literal 76174 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∾O~QKDNsJFf6u!6vf?FVD#*jzHeqbx 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

jk-Yn18e0Qw1Lvfe3qrLB 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 RRSE$gyWbqGDh_+c{s(_~`5*uQ diff --git a/Documentation/Images/set-folder-permissions.png b/Documentation/Images/set-folder-permissions.png index bb6a2f0ff0a50c966f04e2eafd60256b667d90e0..eef158f214488d6f856b9f8aa6cc00f98867222d 100644 GIT binary patch literal 12920 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 Z`ra}%sOOa}{OJgah@hlE0YdA;{{ar2c9{SG literal 29182 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 C6)d9w diff --git a/Documentation/Images/set-folder-permissions2.png b/Documentation/Images/set-folder-permissions2.png new file mode 100644 index 0000000000000000000000000000000000000000..e56279e960c81898818503969fd15cc5dcc87452 GIT binary patch literal 8124 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 literal 0 HcmV?d00001 diff --git a/Documentation/Misc/Index.rst b/Documentation/Misc/Index.rst index f67c0d2..36a252e 100644 --- a/Documentation/Misc/Index.rst +++ b/Documentation/Misc/Index.rst @@ -85,9 +85,24 @@ To have correct urls to indexed files you need to add/adjust following ext:solr .. code-block:: ts + # Make sure the correct public URL is indexed plugin.tx_solr.index.queue._FILES.default.filePublicUrl = public_url plugin.tx_solr.index.queue._FILES.default.url = public_url + # Make sure the fe_groups are considered + plugin.tx_solr.index.queue._FILES.default.access = TEXT + plugin.tx_solr.index.queue._FILES.default.access { + value = r:0 + override { + cObject = TEXT + cObject { + required = 1 + field = fe_groups + wrap = r:| + } + } + } + *This feature is sponsored by: STIMME DER HOFFNUNG Adventist Media Center* diff --git a/README.rst b/README.md similarity index 82% rename from README.rst rename to README.md index d5e2e55..a4c1656 100644 --- a/README.rst +++ b/README.md @@ -1,5 +1,5 @@ FAL SecureDownLoad -================== +=== This extension (fal_securedownload) aims to be a general solution to secure your assets. @@ -7,15 +7,14 @@ When you storage is marked as non-public all links to files from that storage ar The access to assets can be set on folder/file bases by setting access to fe_groups in the file module. -**How to use:** +### How to use 1. Download and install fal_securedownload - 2. Un-check the 'public' checkbox in your file storage - 3. Add a .htaccess file with "Deny from all" (Apache < 2.3) or "Require all denied" (Apache >= 2.3) in your file storage root folder or move your storage outside of your webroot +4. Go to the file list and add access restrictions on file/folder -**Features** +### Features - Restrict FE access on folder level - Restrict FE access on file level @@ -24,10 +23,10 @@ The access to assets can be set on folder/file bases by setting access to fe_gro - Force download for specific file extensions (for protected file storages) - Keep track of requested downloads (count downloads per user and file) -**Requirements:** - TYPO3 7 LTS, TYPO3 8 +### Requirements +- TYPO3 8 LTS or TYPO3 9 LTS -**Suggestions:** - EXT:ke_search v1.8.4 - EXT:solrfal v4.1.0 +### Suggestions +- EXT:ke_search v1.8.4 +- EXT:solrfal v4.1.0 diff --git a/Resources/Public/JavaScript/ContextMenuActions.js b/Resources/Public/JavaScript/ContextMenuActions.js new file mode 100644 index 0000000..b3c4cea --- /dev/null +++ b/Resources/Public/JavaScript/ContextMenuActions.js @@ -0,0 +1,47 @@ +/** + * Module: TYPO3/CMS/FalSecuredownload/ContextMenuActions + * + * JavaScript to handle the click action of the "FalSecuredownload" context menu item + * @exports TYPO3/CMS/FalSecuredownload/ContextMenuActions + */ +define(function () { + 'use strict'; + + /** + * @exports TYPO3/CMS/FalSecuredownload/ContextMenuActions + */ + var ContextMenuActions = {}; + + /** + * Open folder permissions edit form + * + * @param {string} table + * @param {string} uid combined folder identifier + */ + ContextMenuActions.folderPermissions = function (table, uid) { + var folderRecordUid = this.data('folderRecordUid') || 0; + + if (folderRecordUid > 0) { + top.TYPO3.Backend.ContentContainer.setUrl( + top.TYPO3.settings.FormEngine.moduleUrl + + '&edit[tx_falsecuredownload_folder][' + parseInt(folderRecordUid, 10) + ']=edit' + + '&returnUrl=' + ContextMenuActions.getReturnUrl() + ); + } else { + top.TYPO3.Backend.ContentContainer.setUrl( + top.TYPO3.settings.FormEngine.moduleUrl + + '&edit[tx_falsecuredownload_folder][0]=new' + + '&defVals[tx_falsecuredownload_folder][storage]=' + this.data('storage') + + '&defVals[tx_falsecuredownload_folder][folder]=' + this.data('folder') + + '&defVals[tx_falsecuredownload_folder][folder_hash]=' + this.data('folderHash') + + '&returnUrl=' + ContextMenuActions.getReturnUrl() + ); + } + }; + + ContextMenuActions.getReturnUrl = function () { + return top.rawurlencode(top.list_frame.document.location.pathname + top.list_frame.document.location.search); + }; + + return ContextMenuActions; +}); \ No newline at end of file diff --git a/composer.json b/composer.json index 72b4df6..d06fb0a 100644 --- a/composer.json +++ b/composer.json @@ -18,10 +18,10 @@ "source": "https://github.com/beechit/fal_securedownload" }, "require": { - "typo3/cms-core": "^7.6 || ^8.0" + "typo3/cms-core": "^8.7 || ^9.5" }, "require-dev": { - "typo3/cms": "^7.6 || ^8.0" + "typo3/cms": "^8.7 || ^9.5" }, "replace": { "fal_securedownload": "self.version", diff --git a/ext_emconf.php b/ext_emconf.php index 7d93930..cfdaa34 100644 --- a/ext_emconf.php +++ b/ext_emconf.php @@ -17,10 +17,10 @@ 'createDirs' => '', 'modify_tables' => '', 'clearCacheOnLoad' => true, - 'version' => '2.1.0', + 'version' => '2.2.1', 'constraints' => [ 'depends' => [ - 'typo3' => '7.6.0 - 8.7.99', + 'typo3' => '8.7.0 - 9.5.99', ], 'conflicts' => [], 'suggests' => [ diff --git a/ext_localconf.php b/ext_localconf.php index 52c59b1..fe1334d 100644 --- a/ext_localconf.php +++ b/ext_localconf.php @@ -34,10 +34,6 @@ 'generatePublicUrl' ); } - \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::registerAjaxHandler( - 'FalSecuredownload::publicUrl', - \BeechIt\FalSecuredownload\Controller\BePublicUrlController::class . '->dumpFile' - ); // Page module hook $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/class.tx_cms_layout.php']['list_type_Info']['falsecuredownload_filetree']['fal_securedownload'] = @@ -47,6 +43,10 @@ $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['Backend\Template\Components\ButtonBar']['getButtonsHook']['FalSecuredownload'] = \BeechIt\FalSecuredownload\Hooks\DocHeaderButtonsHook::class . '->getButtons'; + // Context menu + $GLOBALS['TYPO3_CONF_VARS']['BE']['ContextMenu']['ItemProviders'][1547242135] + = \BeechIt\FalSecuredownload\ContextMenu\ItemProvider::class; + // refresh file tree after change in tx_falsecuredownload_folder record $GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][] = \BeechIt\FalSecuredownload\Hooks\ProcessDatamapHook::class; diff --git a/ext_tables.php b/ext_tables.php index 1cf2a44..1f20124 100644 --- a/ext_tables.php +++ b/ext_tables.php @@ -1,13 +1,6 @@ \BeechIt\FalSecuredownload\Hooks\ClickMenuOptions::class - ]; -} - // Initiate $iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class); $iconRegistry->registerIcon( From bfade77c004ed81552a2761e126ee278062f1ec2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rossi=2C=20Ren=C3=A9?= Date: Wed, 8 Jan 2020 13:39:02 +0100 Subject: [PATCH 3/3] added missing downloadname field tca configuration --- Configuration/TCA/Overrides/sys_file_metadata.php | 12 ++++++++++++ Resources/Private/Language/locallang_db.xlf | 7 ++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/Configuration/TCA/Overrides/sys_file_metadata.php b/Configuration/TCA/Overrides/sys_file_metadata.php index 431f767..428bf37 100644 --- a/Configuration/TCA/Overrides/sys_file_metadata.php +++ b/Configuration/TCA/Overrides/sys_file_metadata.php @@ -25,8 +25,20 @@ 'foreign_table_where' => 'ORDER BY fe_groups.title', 'enableMultiSelectFilterTextfield' => true, ] + ], + 'download_name' => [ + 'exclude' => true, + 'label' => 'LLL:EXT:fal_securedownload/Resources/Private/Language/locallang_db.xlf:downloadName', + 'description' => 'LLL:EXT:fal_securedownload/Resources/Private/Language/locallang_db.xlf:downloadName.description', + 'config' => [ + 'type' => 'input', + 'size' => '255', + 'max' => '255', + ] ] ]; \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('sys_file_metadata', $additionalColumns); \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('sys_file_metadata', 'fe_groups'); + +\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('sys_file_metadata', 'download_name','', 'after:alternative'); \ No newline at end of file diff --git a/Resources/Private/Language/locallang_db.xlf b/Resources/Private/Language/locallang_db.xlf index 5f91bd2..a7b9781 100644 --- a/Resources/Private/Language/locallang_db.xlf +++ b/Resources/Private/Language/locallang_db.xlf @@ -13,7 +13,12 @@ Folder - + + Alternative Download name + + + Send File with an alternative Filename + \ No newline at end of file