Use EventDispatcher to allow additional setup of auth backends - move federation auth to federation app
This commit is contained in:
parent
cdc536c423
commit
dbddbb634b
4 changed files with 35 additions and 3 deletions
|
@ -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());
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue