diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2015-12-04 12:11:07 +0100 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2016-01-12 14:24:01 +0100 |
commit | dbddbb634bcb6df346988b85cb2847e76e22e632 (patch) | |
tree | 7622e29c27a9c920bf8209466ebf01069a476160 | |
parent | cdc536c42367a1c7667a63c598f50b95956da759 (diff) | |
download | nextcloud-server-dbddbb634bcb6df346988b85cb2847e76e22e632.tar.gz nextcloud-server-dbddbb634bcb6df346988b85cb2847e76e22e632.zip |
Use EventDispatcher to allow additional setup of auth backends - move federation auth to federation app
-rw-r--r-- | apps/dav/lib/server.php | 7 | ||||
-rw-r--r-- | apps/federation/appinfo/application.php | 14 | ||||
-rw-r--r-- | apps/federation/dav/fedauth.php (renamed from apps/dav/lib/connector/fedauth.php) | 2 | ||||
-rw-r--r-- | lib/public/sabrepluginevent.php | 15 |
4 files changed, 35 insertions, 3 deletions
diff --git a/apps/dav/lib/server.php b/apps/dav/lib/server.php index 8b7171c145c..93e903e6bf1 100644 --- a/apps/dav/lib/server.php +++ b/apps/dav/lib/server.php @@ -8,6 +8,7 @@ use OCA\DAV\Connector\Sabre\Auth; use OCA\DAV\Connector\Sabre\BlockLegacyClientPlugin; use OCA\DAV\Files\CustomPropertiesBackend; use OCP\IRequest; +use OCP\SabrePluginEvent; use Sabre\DAV\Auth\Plugin; class Server { @@ -37,8 +38,12 @@ class Server { $this->server->addPlugin(new BlockLegacyClientPlugin(\OC::$server->getConfig())); $authPlugin = new Plugin($authBackend, 'ownCloud'); - $authPlugin->addBackend(new FedAuth(\OC::$server->getDatabaseConnection())); $this->server->addPlugin($authPlugin); + + // allow setup of additional auth backends + $event = new SabrePluginEvent($this->server); + $dispatcher->dispatch('OCA\DAV\Connector\Sabre::authInit', $event); + $this->server->addPlugin(new \OCA\DAV\Connector\Sabre\DummyGetResponsePlugin()); $this->server->addPlugin(new \OCA\DAV\Connector\Sabre\ExceptionLoggerPlugin('webdav', $logger)); $this->server->addPlugin(new \OCA\DAV\Connector\Sabre\LockPlugin()); diff --git a/apps/federation/appinfo/application.php b/apps/federation/appinfo/application.php index 45d88548b70..f0fefb948af 100644 --- a/apps/federation/appinfo/application.php +++ b/apps/federation/appinfo/application.php @@ -23,6 +23,7 @@ namespace OCA\Federation\AppInfo; use OCA\Federation\API\OCSAuthAPI; use OCA\Federation\Controller\SettingsController; +use OCA\Federation\DAV\FedAuth; use OCA\Federation\DbHandler; use OCA\Federation\Hooks; use OCA\Federation\Middleware\AddServerMiddleware; @@ -30,7 +31,9 @@ use OCA\Federation\TrustedServers; use OCP\API; use OCP\App; use OCP\AppFramework\IAppContainer; +use OCP\SabrePluginEvent; use OCP\Util; +use Sabre\DAV\Auth\Plugin; class Application extends \OCP\AppFramework\App { @@ -144,6 +147,17 @@ class Application extends \OCP\AppFramework\App { $hooksManager, 'addServerHook' ); + + $dispatcher = $this->getContainer()->getServer()->getEventDispatcher(); + $dispatcher->addListener('OCA\DAV\Connector\Sabre::authInit', function($event) use($container) { + if ($event instanceof SabrePluginEvent) { + $authPlugin = $event->getServer()->getPlugin('auth'); + if ($authPlugin instanceof Plugin) { + $db = $container->getServer()->getDatabaseConnection(); + $authPlugin->addBackend(new FedAuth($db)); + } + } + }); } } diff --git a/apps/dav/lib/connector/fedauth.php b/apps/federation/dav/fedauth.php index 42a29cef3fc..ade5448d1bc 100644 --- a/apps/dav/lib/connector/fedauth.php +++ b/apps/federation/dav/fedauth.php @@ -18,7 +18,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/> * */ -namespace OCA\DAV\Connector; +namespace OCA\Federation\DAV; use OCA\Federation\DbHandler; use OCP\IDBConnection; diff --git a/lib/public/sabrepluginevent.php b/lib/public/sabrepluginevent.php index fed3237166d..1a64c8ac3ed 100644 --- a/lib/public/sabrepluginevent.php +++ b/lib/public/sabrepluginevent.php @@ -23,6 +23,7 @@ namespace OCP; use OCP\AppFramework\Http; +use Sabre\DAV\Server; use Symfony\Component\EventDispatcher\Event; /** @@ -36,12 +37,16 @@ class SabrePluginEvent extends Event { /** @var string */ protected $message; + /** @var Server */ + protected $server; + /** * @since 8.2.0 */ - public function __construct() { + public function __construct($server = null) { $this->message = ''; $this->statusCode = Http::STATUS_OK; + $this->server = $server; } /** @@ -79,4 +84,12 @@ class SabrePluginEvent extends Event { public function getMessage() { return $this->message; } + + /** + * @return null|Server + * @since 9.0.0 + */ + public function getServer() { + return $this->server; + } } |