|
|
|
|
@ -7,6 +7,7 @@ |
|
|
|
|
*/ |
|
|
|
|
namespace OCA\Files_External\Service; |
|
|
|
|
|
|
|
|
|
use OCA\Files_External\AppInfo\Application; |
|
|
|
|
use OCA\Files_External\Config\IConfigHandler; |
|
|
|
|
use OCA\Files_External\ConfigLexicon; |
|
|
|
|
use OCA\Files_External\Lib\Auth\AuthMechanism; |
|
|
|
|
@ -35,11 +36,9 @@ class BackendService { |
|
|
|
|
/** Priority constants for PriorityTrait */ |
|
|
|
|
public const PRIORITY_DEFAULT = 100; |
|
|
|
|
|
|
|
|
|
/** @var bool */ |
|
|
|
|
private $userMountingAllowed = true; |
|
|
|
|
|
|
|
|
|
private ?bool $userMountingAllowed = null; |
|
|
|
|
/** @var string[] */ |
|
|
|
|
private $userMountingBackends = []; |
|
|
|
|
private array $userMountingBackends = []; |
|
|
|
|
|
|
|
|
|
/** @var Backend[] */ |
|
|
|
|
private $backends = []; |
|
|
|
|
@ -59,16 +58,8 @@ class BackendService { |
|
|
|
|
private $configHandlers = []; |
|
|
|
|
|
|
|
|
|
public function __construct( |
|
|
|
|
protected IAppConfig $appConfig, |
|
|
|
|
protected readonly IAppConfig $appConfig, |
|
|
|
|
) { |
|
|
|
|
// Load config values |
|
|
|
|
$this->userMountingAllowed = $appConfig->getValueBool('files_external', ConfigLexicon::ALLOW_USER_MOUNTING); |
|
|
|
|
$this->userMountingBackends = explode(',', $appConfig->getValueString('files_external', ConfigLexicon::USER_MOUNTING_BACKENDS)); |
|
|
|
|
|
|
|
|
|
// if no backend is in the list an empty string is in the array and user mounting is disabled |
|
|
|
|
if ($this->userMountingBackends === ['']) { |
|
|
|
|
$this->userMountingAllowed = false; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
@ -246,9 +237,23 @@ class BackendService { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @return bool |
|
|
|
|
* returns if user mounting is allowed. |
|
|
|
|
* also initiate the list of available backends. |
|
|
|
|
* |
|
|
|
|
* @psalm-assert bool $this->userMountingAllowed |
|
|
|
|
*/ |
|
|
|
|
public function isUserMountingAllowed() { |
|
|
|
|
public function isUserMountingAllowed(): bool { |
|
|
|
|
if ($this->userMountingAllowed === null) { |
|
|
|
|
// Load config values |
|
|
|
|
$this->userMountingAllowed = $this->appConfig->getValueBool(Application::APP_ID, ConfigLexicon::ALLOW_USER_MOUNTING); |
|
|
|
|
$this->userMountingBackends = explode(',', $this->appConfig->getValueString(Application::APP_ID, ConfigLexicon::USER_MOUNTING_BACKENDS)); |
|
|
|
|
|
|
|
|
|
// if no backend is in the list an empty string is in the array and user mounting is disabled |
|
|
|
|
if ($this->userMountingBackends === ['']) { |
|
|
|
|
$this->userMountingAllowed = false; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $this->userMountingAllowed; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -258,13 +263,8 @@ class BackendService { |
|
|
|
|
* @param Backend $backend |
|
|
|
|
* @return bool |
|
|
|
|
*/ |
|
|
|
|
protected function isAllowedUserBackend(Backend $backend) { |
|
|
|
|
if ($this->userMountingAllowed |
|
|
|
|
&& array_intersect($backend->getIdentifierAliases(), $this->userMountingBackends) |
|
|
|
|
) { |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
|
protected function isAllowedUserBackend(Backend $backend): bool { |
|
|
|
|
return ($this->isUserMountingAllowed() && array_intersect($backend->getIdentifierAliases(), $this->userMountingBackends)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|