Skip to content
Snippets Groups Projects
Commit 171761f5 authored by Andreas Wolf's avatar Andreas Wolf Committed by Christian Kuhn
Browse files

[BUGFIX] inject* methods in FAL inhibit use of Extbase object manager

The ResourceStorage class of FAL has two inject* methods which are seen
as dependency injectors by the Extbase object manager. Thus an exception
is thrown when a ResourceStorage object is created via Extbase.

This commit changes the two method's names and adjust all usages within
the core. These methods are internal and I don't expect them to be used
anywhere else, so we don't need a backwards compatibility layer.

Change-Id: I4b73445708cf8041b505b5ea8923dc595ddaadb0
Resolves: #45319
Releases: 6.1, 6.0
Reviewed-on: https://review.typo3.org/18882
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
parent 71686a8a
No related branches found
No related tags found
No related merge requests found
......@@ -1378,11 +1378,11 @@ abstract class t3lib_userAuthGroup extends t3lib_userAuth {
$storageObject = $storageRepository->findByUid($userHomeStorageUid);
// First try and mount with [uid]_[username]
$userHomeFilterIdentifier = $userHomeFilter . $this->user['uid'] . '_' . $this->user['username'] . $GLOBALS['TYPO3_CONF_VARS']['BE']['userUploadDir'];
$didMount = $storageObject->injectFileMount($userHomeFilterIdentifier);
$didMount = $storageObject->addFileMount($userHomeFilterIdentifier);
// If that failed, try and mount with only [uid]
if (!$didMount) {
$userHomeFilterIdentifier = $userHomeFilter . $this->user['uid'] . '_' . $this->user['username'] . $GLOBALS['TYPO3_CONF_VARS']['BE']['userUploadDir'];
$storageObject->injectFileMount($userHomeFilterIdentifier);
$storageObject->addFileMount($userHomeFilterIdentifier);
}
$this->fileStorages[$storageObject->getUid()] = $storageObject;
}
......@@ -1396,7 +1396,7 @@ abstract class t3lib_userAuthGroup extends t3lib_userAuth {
$storageObject = $storageRepository->findByUid($groupHomeStorageUid);
foreach ($this->userGroups as $groupUid => $groupData) {
$groupHomeFilterIdentifier = $groupHomeFilter . $groupData['uid'];
$storageObject->injectFileMount($groupHomeFilterIdentifier);
$storageObject->addFileMount($groupHomeFilterIdentifier);
}
$this->fileStorages[$storageObject->getUid()] = $storageObject;
}
......@@ -1408,7 +1408,7 @@ abstract class t3lib_userAuthGroup extends t3lib_userAuth {
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'sys_filemounts', 'deleted=0 AND hidden=0 AND pid=0 AND uid IN (' . $this->dataLists['filemount_list'] . ')', '', $orderBy);
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
$storageObject = $storageRepository->findByUid($row['base']);
$storageObject->injectFileMount($row['path'], $row);
$storageObject->addFileMount($row['path'], $row);
$this->fileStorages[$storageObject->getUid()] = $storageObject;
}
$GLOBALS['TYPO3_DB']->sql_free_result($res);
......@@ -1417,7 +1417,7 @@ abstract class t3lib_userAuthGroup extends t3lib_userAuth {
// Injects the users' permissions to each storage
foreach ($this->fileStorages as $storageObject) {
$storagePermissions = $this->getFilePermissionsForStorage($storageObject);
$storageObject->injectUserPermissions($storagePermissions);
$storageObject->setUserPermissions($storagePermissions);
}
// more narrowing down through the workspace
$this->initializeFileStoragesForWorkspace();
......@@ -1802,7 +1802,7 @@ abstract class t3lib_userAuthGroup extends t3lib_userAuth {
// TODO: check if the filter is narrowing down the existing user
$storageObject = $storageRepository->findByUid($row['base']);
if (isset($existingFileStoragesOfUser[$storageObject->getUid()])) {
$storageObject->injectFileMount($row['path']);
$storageObject->addFileMount($row['path']);
$this->fileStorages[$storageObject->getUid()] = $storageObject;
}
}
......
......@@ -1522,11 +1522,11 @@ class BackendUserAuthentication extends \TYPO3\CMS\Core\Authentication\AbstractU
$storageObject = $storageRepository->findByUid($userHomeStorageUid);
// First try and mount with [uid]_[username]
$userHomeFilterIdentifier = $userHomeFilter . $this->user['uid'] . '_' . $this->user['username'] . $GLOBALS['TYPO3_CONF_VARS']['BE']['userUploadDir'];
$didMount = $storageObject->injectFileMount($userHomeFilterIdentifier);
$didMount = $storageObject->addFileMount($userHomeFilterIdentifier);
// If that failed, try and mount with only [uid]
if (!$didMount) {
$userHomeFilterIdentifier = $userHomeFilter . $this->user['uid'] . '_' . $this->user['username'] . $GLOBALS['TYPO3_CONF_VARS']['BE']['userUploadDir'];
$storageObject->injectFileMount($userHomeFilterIdentifier);
$storageObject->addFileMount($userHomeFilterIdentifier);
}
$this->fileStorages[$storageObject->getUid()] = $storageObject;
}
......@@ -1540,7 +1540,7 @@ class BackendUserAuthentication extends \TYPO3\CMS\Core\Authentication\AbstractU
$storageObject = $storageRepository->findByUid($groupHomeStorageUid);
foreach ($this->userGroups as $groupUid => $groupData) {
$groupHomeFilterIdentifier = $groupHomeFilter . $groupData['uid'];
$storageObject->injectFileMount($groupHomeFilterIdentifier);
$storageObject->addFileMount($groupHomeFilterIdentifier);
}
$this->fileStorages[$storageObject->getUid()] = $storageObject;
}
......@@ -1552,7 +1552,7 @@ class BackendUserAuthentication extends \TYPO3\CMS\Core\Authentication\AbstractU
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'sys_filemounts', 'deleted=0 AND hidden=0 AND pid=0 AND uid IN (' . $this->dataLists['filemount_list'] . ')', '', $orderBy);
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
$storageObject = $storageRepository->findByUid($row['base']);
$storageObject->injectFileMount($row['path'], $row);
$storageObject->addFileMount($row['path'], $row);
$this->fileStorages[$storageObject->getUid()] = $storageObject;
}
$GLOBALS['TYPO3_DB']->sql_free_result($res);
......@@ -1561,7 +1561,7 @@ class BackendUserAuthentication extends \TYPO3\CMS\Core\Authentication\AbstractU
// Injects the users' permissions to each storage
foreach ($this->fileStorages as $storageObject) {
$storagePermissions = $this->getFilePermissionsForStorage($storageObject);
$storageObject->injectUserPermissions($storagePermissions);
$storageObject->setUserPermissions($storagePermissions);
}
// more narrowing down through the workspace
$this->initializeFileStoragesForWorkspace();
......@@ -1942,7 +1942,7 @@ class BackendUserAuthentication extends \TYPO3\CMS\Core\Authentication\AbstractU
// TODO: check if the filter is narrowing down the existing user
$storageObject = $storageRepository->findByUid($row['base']);
if (isset($existingFileStoragesOfUser[$storageObject->getUid()])) {
$storageObject->injectFileMount($row['path']);
$storageObject->addFileMount($row['path']);
$this->fileStorages[$storageObject->getUid()] = $storageObject;
}
}
......
......@@ -459,7 +459,7 @@ class ResourceStorage {
* @throws Exception\FolderDoesNotExistException
* @return void
*/
public function injectFileMount($folderIdentifier, $additionalData = array()) {
public function addFileMount($folderIdentifier, $additionalData = array()) {
// check for the folder before we add it as a filemount
if ($this->driver->folderExists($folderIdentifier) === FALSE) {
// if there is an error, this is important and should be handled
......@@ -525,12 +525,12 @@ class ResourceStorage {
}
/**
* Adds user permissions to the storage
* Sets the user permissions of the storage
*
* @param array $userPermissions
* @return void
*/
public function injectUserPermissions(array $userPermissions) {
public function setUserPermissions(array $userPermissions) {
$this->userPermissions = $userPermissions;
}
......
......@@ -334,7 +334,7 @@ class ResourceStorageTest extends \TYPO3\CMS\Core\Tests\Unit\Resource\BaseTestCa
*/
public function checkUserActionPermissionReturnsFalseIfPermissionIsSetToZero() {
$this->prepareFixture(array());
$this->fixture->injectUserPermissions(array('readFolder' => TRUE, 'writeFile' => TRUE));
$this->fixture->setUserPermissions(array('readFolder' => TRUE, 'writeFile' => TRUE));
$this->assertTrue($this->fixture->checkUserActionPermission('read', 'folder'));
}
......@@ -364,7 +364,7 @@ class ResourceStorageTest extends \TYPO3\CMS\Core\Tests\Unit\Resource\BaseTestCa
*/
public function checkUserActionPermissionAcceptsArbitrarilyCasedArguments($permissions, $action, $type) {
$this->prepareFixture(array());
$this->fixture->injectUserPermissions($permissions);
$this->fixture->setUserPermissions($permissions);
$this->assertTrue($this->fixture->checkUserActionPermission($action, $type));
}
......@@ -373,7 +373,7 @@ class ResourceStorageTest extends \TYPO3\CMS\Core\Tests\Unit\Resource\BaseTestCa
*/
public function userActionIsDisallowedIfPermissionIsSetToFalse() {
$this->prepareFixture(array());
$this->fixture->injectUserPermissions(array('readFolder' => FALSE));
$this->fixture->setUserPermissions(array('readFolder' => FALSE));
$this->assertFalse($this->fixture->checkUserActionPermission('read', 'folder'));
}
......@@ -382,7 +382,7 @@ class ResourceStorageTest extends \TYPO3\CMS\Core\Tests\Unit\Resource\BaseTestCa
*/
public function userActionIsDisallowedIfPermissionIsNotSet() {
$this->prepareFixture(array());
$this->fixture->injectUserPermissions(array('readFolder' => TRUE));
$this->fixture->setUserPermissions(array('readFolder' => TRUE));
$this->assertFalse($this->fixture->checkUserActionPermission('write', 'folder'));
}
......@@ -476,7 +476,7 @@ class ResourceStorageTest extends \TYPO3\CMS\Core\Tests\Unit\Resource\BaseTestCa
$mockedDriver = $this->createDriverMock(array('basePath' => $this->getMountRootUrl()), NULL, NULL);
$this->initializeVfs();
$this->prepareFixture(array(), NULL, $mockedDriver);
$this->fixture->injectFileMount('/mountFolder');
$this->fixture->addFileMount('/mountFolder');
$this->assertEquals(1, count($this->fixture->getFileMounts()));
$this->fixture->isWithinFileMountBoundaries($mockedFile);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment