diff options
Diffstat (limited to '3dparty/Sabre/DAV/Auth/Plugin.php')
-rw-r--r-- | 3dparty/Sabre/DAV/Auth/Plugin.php | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/3dparty/Sabre/DAV/Auth/Plugin.php b/3dparty/Sabre/DAV/Auth/Plugin.php new file mode 100644 index 00000000000..f3718fcf469 --- /dev/null +++ b/3dparty/Sabre/DAV/Auth/Plugin.php @@ -0,0 +1,111 @@ +<?php + +/** + * This plugin provides Authentication for a WebDAV server. + * + * It relies on a Backend object, which provides user information. + * + * Additionally, it provides support for: + * * {DAV:}current-user-principal property from RFC5397 + * * {DAV:}principal-collection-set property from RFC3744 + * + * @package Sabre + * @subpackage DAV + * @copyright Copyright (C) 2007-2011 Rooftop Solutions. All rights reserved. + * @author Evert Pot (http://www.rooftopsolutions.nl/) + * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License + */ +class Sabre_DAV_Auth_Plugin extends Sabre_DAV_ServerPlugin { + + /** + * Reference to main server object + * + * @var Sabre_DAV_Server + */ + private $server; + + /** + * Authentication backend + * + * @var Sabre_DAV_Auth_Backend_Abstract + */ + private $authBackend; + + /** + * The authentication realm. + * + * @var string + */ + private $realm; + + /** + * __construct + * + * @param Sabre_DAV_Auth_Backend_Abstract $authBackend + * @param string $realm + * @return void + */ + public function __construct(Sabre_DAV_Auth_IBackend $authBackend, $realm) { + + $this->authBackend = $authBackend; + $this->realm = $realm; + + } + + /** + * Initializes the plugin. This function is automatically called by the server + * + * @param Sabre_DAV_Server $server + * @return void + */ + public function initialize(Sabre_DAV_Server $server) { + + $this->server = $server; + $this->server->subscribeEvent('beforeMethod',array($this,'beforeMethod'),10); + + } + + /** + * Returns a plugin name. + * + * Using this name other plugins will be able to access other plugins + * using Sabre_DAV_Server::getPlugin + * + * @return string + */ + public function getPluginName() { + + return 'auth'; + + } + + /** + * Returns the current users' principal uri. + * + * If nobody is logged in, this will return null. + * + * @return string|null + */ + public function getCurrentUser() { + + $userInfo = $this->authBackend->getCurrentUser(); + if (!$userInfo) return null; + + return $userInfo; + + } + + /** + * This method is called before any HTTP method and forces users to be authenticated + * + * @param string $method + * @throws Sabre_DAV_Exception_NotAuthenticated + * @return bool + */ + public function beforeMethod($method, $uri) { + + $this->authBackend->authenticate($this->server,$this->realm); + + } + +} |