Merge pull request #23261 from nextcloud/enh/external-storage-session-type
Expose session based authentication through mount point type
This commit is contained in:
commit
275f15c1fb
|
@ -161,6 +161,7 @@ class ConfigAdapter implements IMountProvider {
|
|||
if ($storageConfig->getType() === StorageConfig::MOUNT_TYPE_PERSONAl) {
|
||||
return new PersonalMount(
|
||||
$this->userStoragesService,
|
||||
$storageConfig,
|
||||
$storageConfig->getId(),
|
||||
$storage,
|
||||
'/' . $user->getUID() . '/files' . $storageConfig->getMountPoint(),
|
||||
|
@ -171,6 +172,7 @@ class ConfigAdapter implements IMountProvider {
|
|||
);
|
||||
} else {
|
||||
return new ExternalMountPoint(
|
||||
$storageConfig,
|
||||
$storage,
|
||||
'/' . $user->getUID() . '/files' . $storageConfig->getMountPoint(),
|
||||
null,
|
||||
|
|
|
@ -24,9 +24,20 @@
|
|||
namespace OCA\Files_External\Config;
|
||||
|
||||
use OC\Files\Mount\MountPoint;
|
||||
use OCA\Files_External\Lib\StorageConfig;
|
||||
use OCA\Files_External\Lib\Auth\Password\SessionCredentials;
|
||||
|
||||
class ExternalMountPoint extends MountPoint {
|
||||
|
||||
/** @var StorageConfig */
|
||||
protected $storageConfig;
|
||||
|
||||
public function __construct(StorageConfig $storageConfig, $storage, $mountpoint, $arguments = null, $loader = null, $mountOptions = null, $mountId = null) {
|
||||
$this->storageConfig = $storageConfig;
|
||||
parent::__construct($storage, $mountpoint, $arguments, $loader, $mountOptions, $mountId);
|
||||
}
|
||||
|
||||
public function getMountType() {
|
||||
return 'external';
|
||||
return ($this->storageConfig->getAuthMechanism() instanceof SessionCredentials) ? 'external-session' : 'external';
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@ namespace OCA\Files_External\Lib;
|
|||
use OC\Files\Mount\MoveableMount;
|
||||
use OCA\Files_External\Config\ExternalMountPoint;
|
||||
use OCA\Files_External\Service\UserStoragesService;
|
||||
use OCP\Files\Storage\IStorage;
|
||||
|
||||
/**
|
||||
* Person mount points can be moved by the user
|
||||
|
@ -42,7 +43,7 @@ class PersonalMount extends ExternalMountPoint implements MoveableMount {
|
|||
/**
|
||||
* @param UserStoragesService $storagesService
|
||||
* @param int $storageId
|
||||
* @param \OCP\Files\Storage $storage
|
||||
* @param IStorage $storage
|
||||
* @param string $mountpoint
|
||||
* @param array $arguments (optional) configuration for the storage backend
|
||||
* @param \OCP\Files\Storage\IStorageFactory $loader
|
||||
|
@ -50,6 +51,7 @@ class PersonalMount extends ExternalMountPoint implements MoveableMount {
|
|||
*/
|
||||
public function __construct(
|
||||
UserStoragesService $storagesService,
|
||||
StorageConfig $storageConfig,
|
||||
$storageId,
|
||||
$storage,
|
||||
$mountpoint,
|
||||
|
@ -58,7 +60,7 @@ class PersonalMount extends ExternalMountPoint implements MoveableMount {
|
|||
$mountOptions = null,
|
||||
$mountId = null
|
||||
) {
|
||||
parent::__construct($storage, $mountpoint, $arguments, $loader, $mountOptions, $mountId);
|
||||
parent::__construct($storageConfig, $storage, $mountpoint, $arguments, $loader, $mountOptions, $mountId);
|
||||
$this->storagesService = $storagesService;
|
||||
$this->numericStorageId = $storageId;
|
||||
}
|
||||
|
|
|
@ -26,10 +26,12 @@ namespace OCA\Files_External\Tests;
|
|||
|
||||
use OC\Files\Mount\Manager;
|
||||
use OCA\Files_External\Lib\PersonalMount;
|
||||
use OCA\Files_External\Lib\StorageConfig;
|
||||
use Test\TestCase;
|
||||
|
||||
class PersonalMountTest extends TestCase {
|
||||
public function testFindByStorageId() {
|
||||
$storageConfig = $this->createMock(StorageConfig::class);
|
||||
/** @var \OCA\Files_External\Service\UserStoragesService $storageService */
|
||||
$storageService = $this->getMockBuilder('\OCA\Files_External\Service\UserStoragesService')
|
||||
->disableOriginalConstructor()
|
||||
|
@ -43,7 +45,7 @@ class PersonalMountTest extends TestCase {
|
|||
->method('getId')
|
||||
->willReturn('dummy');
|
||||
|
||||
$mount = new PersonalMount($storageService, 10, $storage, '/foo');
|
||||
$mount = new PersonalMount($storageService, $storageConfig, 10, $storage, '/foo');
|
||||
|
||||
$mountManager = new Manager();
|
||||
$mountManager->addMount($mount);
|
||||
|
|
Loading…
Reference in New Issue