diff options
Diffstat (limited to 'apps/files_external/service')
-rw-r--r-- | apps/files_external/service/backendservice.php | 40 | ||||
-rw-r--r-- | apps/files_external/service/storagesservice.php | 39 |
2 files changed, 51 insertions, 28 deletions
diff --git a/apps/files_external/service/backendservice.php b/apps/files_external/service/backendservice.php index c1abbcf2b7c..bee08ecbd15 100644 --- a/apps/files_external/service/backendservice.php +++ b/apps/files_external/service/backendservice.php @@ -83,7 +83,9 @@ class BackendService { if (!$this->isAllowedUserBackend($backend)) { $backend->removeVisibility(BackendService::VISIBILITY_PERSONAL); } - $this->backends[$backend->getClass()] = $backend; + foreach ($backend->getIdentifierAliases() as $alias) { + $this->backends[$alias] = $backend; + } } /** @@ -103,7 +105,9 @@ class BackendService { if (!$this->isAllowedAuthMechanism($authMech)) { $authMech->removeVisibility(BackendService::VISIBILITY_PERSONAL); } - $this->authMechanisms[$authMech->getClass()] = $authMech; + foreach ($authMech->getIdentifierAliases() as $alias) { + $this->authMechanisms[$alias] = $authMech; + } } /** @@ -121,7 +125,12 @@ class BackendService { * @return Backend[] */ public function getBackends() { - return $this->backends; + // only return real identifiers, no aliases + $backends = []; + foreach ($this->backends as $backend) { + $backends[$backend->getIdentifier()] = $backend; + } + return $backends; } /** @@ -160,12 +169,12 @@ class BackendService { } /** - * @param string $class Backend class name + * @param string $identifier * @return Backend|null */ - public function getBackend($class) { - if (isset($this->backends[$class])) { - return $this->backends[$class]; + public function getBackend($identifier) { + if (isset($this->backends[$identifier])) { + return $this->backends[$identifier]; } return null; } @@ -176,7 +185,12 @@ class BackendService { * @return AuthMechanism[] */ public function getAuthMechanisms() { - return $this->authMechanisms; + // only return real identifiers, no aliases + $mechanisms = []; + foreach ($this->authMechanisms as $mechanism) { + $mechanisms[$mechanism->getIdentifier()] = $mechanism; + } + return $mechanisms; } /** @@ -217,12 +231,12 @@ class BackendService { /** - * @param string $class + * @param string $identifier * @return AuthMechanism|null */ - public function getAuthMechanism($class) { - if (isset($this->authMechanisms[$class])) { - return $this->authMechanisms[$class]; + public function getAuthMechanism($identifier) { + if (isset($this->authMechanisms[$identifier])) { + return $this->authMechanisms[$identifier]; } return null; } @@ -242,7 +256,7 @@ class BackendService { */ protected function isAllowedUserBackend(Backend $backend) { if ($this->userMountingAllowed && - in_array($backend->getClass(), $this->userMountingBackends) + !empty(array_intersect($backend->getIdentifierAliases(), $this->userMountingBackends)) ) { return true; } diff --git a/apps/files_external/service/storagesservice.php b/apps/files_external/service/storagesservice.php index b8a1824ba23..e89af6bc756 100644 --- a/apps/files_external/service/storagesservice.php +++ b/apps/files_external/service/storagesservice.php @@ -81,9 +81,9 @@ abstract class StoragesService { $applicable, $storageOptions ) { - $backend = $this->backendService->getBackend($storageOptions['class']); + $backend = $this->backendService->getBackend($storageOptions['backend']); if (!$backend) { - throw new \UnexpectedValueException('Invalid backend class'); + throw new \UnexpectedValueException('Invalid backend '.$storageOptions['backend']); } $storageConfig->setBackend($backend); @@ -94,7 +94,7 @@ abstract class StoragesService { $storageOptions['authMechanism'] = 'null'; // to make error handling easier } if (!$authMechanism) { - throw new \UnexpectedValueException('Invalid authentication mechanism class'); + throw new \UnexpectedValueException('Invalid authentication mechanism '.$storageOptions['authMechanism']); } $storageConfig->setAuthMechanism($authMechanism); @@ -140,9 +140,10 @@ abstract class StoragesService { * - $mountPath is the mount point path (where the storage must be mounted) * - $storageOptions is a map of storage options: * - "priority": storage priority - * - "backend": backend class name + * - "backend": backend identifier + * - "class": LEGACY backend class name * - "options": backend-specific options - * - "authMechanism": authentication mechanism class name + * - "authMechanism": authentication mechanism identifier * - "mountOptions": mount-specific options (ex: disable previews, scanner, etc) */ @@ -186,6 +187,13 @@ abstract class StoragesService { // options might be needed for the config hash $storageOptions['options'] = \OC_Mount_Config::decryptPasswords($storageOptions['options']); + if (!isset($storageOptions['backend'])) { + $storageOptions['backend'] = $storageOptions['class']; // legacy compat + } + if (!isset($storageOptions['authMechanism'])) { + $storageOptions['authMechanism'] = null; // ensure config hash works + } + if (isset($storageOptions['id'])) { $configId = (int)$storageOptions['id']; if (isset($storages[$configId])) { @@ -271,8 +279,9 @@ abstract class StoragesService { $options = [ 'id' => $storageConfig->getId(), - 'class' => $storageConfig->getBackend()->getClass(), - 'authMechanism' => $storageConfig->getAuthMechanism()->getClass(), + 'backend' => $storageConfig->getBackend()->getIdentifier(), + //'class' => $storageConfig->getBackend()->getClass(), + 'authMechanism' => $storageConfig->getAuthMechanism()->getIdentifier(), 'options' => $storageConfig->getBackendOptions(), ]; @@ -350,8 +359,8 @@ abstract class StoragesService { * Create a storage from its parameters * * @param string $mountPoint storage mount point - * @param string $backendClass backend class name - * @param string $authMechanismClass authentication mechanism class + * @param string $backendIdentifier backend identifier + * @param string $authMechanismIdentifier authentication mechanism identifier * @param array $backendOptions backend-specific options * @param array|null $mountOptions mount-specific options * @param array|null $applicableUsers users for which to mount the storage @@ -362,21 +371,21 @@ abstract class StoragesService { */ public function createStorage( $mountPoint, - $backendClass, - $authMechanismClass, + $backendIdentifier, + $authMechanismIdentifier, $backendOptions, $mountOptions = null, $applicableUsers = null, $applicableGroups = null, $priority = null ) { - $backend = $this->backendService->getBackend($backendClass); + $backend = $this->backendService->getBackend($backendIdentifier); if (!$backend) { - throw new \InvalidArgumentException('Unable to get backend for backend class '.$backendClass); + throw new \InvalidArgumentException('Unable to get backend for '.$backendIdentifier); } - $authMechanism = $this->backendService->getAuthMechanism($authMechanismClass); + $authMechanism = $this->backendService->getAuthMechanism($authMechanismIdentifier); if (!$authMechanism) { - throw new \InvalidArgumentException('Unable to get authentication mechanism for class '.$authMechanismClass); + throw new \InvalidArgumentException('Unable to get authentication mechanism for '.$authMechanismIdentifier); } $newStorage = new StorageConfig(); $newStorage->setMountPoint($mountPoint); |