From 1065f58787be522f64b79c4430ebb50f66f6eda6 Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Thu, 5 Dec 2019 15:39:31 -0100 Subject: [PATCH] confirm auth on share generated by Circles Signed-off-by: Maxence Lange returns true Signed-off-by: Maxence Lange DI Signed-off-by: Maxence Lange DI Signed-off-by: Maxence Lange --- .../lib/AppInfo/Application.php | 1 + .../lib/FederatedShareProvider.php | 2 +- .../lib/ocm/CloudFederationProviderFiles.php | 17 +++++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/apps/federatedfilesharing/lib/AppInfo/Application.php b/apps/federatedfilesharing/lib/AppInfo/Application.php index 158ef1f4c18c0..5b74d9417e7a6 100644 --- a/apps/federatedfilesharing/lib/AppInfo/Application.php +++ b/apps/federatedfilesharing/lib/AppInfo/Application.php @@ -58,6 +58,7 @@ function() use ($container) { $server->query(AddressHandler::class), $server->getLogger(), $server->getUserManager(), + $server->getShareManager(), $server->getCloudIdManager(), $server->getActivityManager(), $server->getNotificationManager(), diff --git a/apps/federatedfilesharing/lib/FederatedShareProvider.php b/apps/federatedfilesharing/lib/FederatedShareProvider.php index a95320daf48e2..f124517a35a4e 100644 --- a/apps/federatedfilesharing/lib/FederatedShareProvider.php +++ b/apps/federatedfilesharing/lib/FederatedShareProvider.php @@ -97,7 +97,7 @@ class FederatedShareProvider implements IShareProvider { private $cloudFederationProviderManager; /** @var array list of supported share types */ - private $supportedShareType = [\OCP\Share::SHARE_TYPE_REMOTE_GROUP, \OCP\Share::SHARE_TYPE_REMOTE]; + private $supportedShareType = [IShare::TYPE_REMOTE_GROUP, IShare::TYPE_REMOTE, IShare::TYPE_CIRCLE]; /** * DefaultShareProvider constructor. diff --git a/apps/federatedfilesharing/lib/ocm/CloudFederationProviderFiles.php b/apps/federatedfilesharing/lib/ocm/CloudFederationProviderFiles.php index fa3e17271cf33..9fb742eac6c41 100644 --- a/apps/federatedfilesharing/lib/ocm/CloudFederationProviderFiles.php +++ b/apps/federatedfilesharing/lib/ocm/CloudFederationProviderFiles.php @@ -47,6 +47,7 @@ use OCP\Notification\IManager as INotificationManager; use OCP\Share; use OCP\Share\Exceptions\ShareNotFound; +use OCP\Share\IManager; use OCP\Share\IShare; use OCP\Util; @@ -67,6 +68,9 @@ class CloudFederationProviderFiles implements ICloudFederationProvider { /** @var IUserManager */ private $userManager; + /** @var IManager */ + private $shareManager; + /** @var ICloudIdManager */ private $cloudIdManager; @@ -99,6 +103,7 @@ class CloudFederationProviderFiles implements ICloudFederationProvider { * @param AddressHandler $addressHandler * @param ILogger $logger * @param IUserManager $userManager + * @param IManager $shareManager * @param ICloudIdManager $cloudIdManager * @param IActivityManager $activityManager * @param INotificationManager $notificationManager @@ -113,6 +118,7 @@ public function __construct(IAppManager $appManager, AddressHandler $addressHandler, ILogger $logger, IUserManager $userManager, + IManager $shareManager, ICloudIdManager $cloudIdManager, IActivityManager $activityManager, INotificationManager $notificationManager, @@ -127,6 +133,7 @@ public function __construct(IAppManager $appManager, $this->addressHandler = $addressHandler; $this->logger = $logger; $this->userManager = $userManager; + $this->shareManager = $shareManager; $this->cloudIdManager = $cloudIdManager; $this->activityManager = $activityManager; $this->notificationManager = $notificationManager; @@ -802,6 +809,16 @@ protected function verifyShare(IShare $share, $token) { return true; } + if ($share->getShareType() === IShare::TYPE_CIRCLE) { + try { + $knownShare = $this->shareManager->getShareByToken($token); + if ($knownShare->getId() === $share->getId()) { + return true; + } + } catch (ShareNotFound $e) { + } + } + throw new AuthenticationFailedException(); }