Blame view

sources/3rdparty/sabre/dav/lib/Sabre/DAV/Auth/Plugin.php 2.42 KB
03e52840d   Kload   Init
1
  <?php
6d9380f96   Cédric Dupont   Update sources OC...
2
3
  namespace Sabre\DAV\Auth;
  use Sabre\DAV;
03e52840d   Kload   Init
4
5
6
7
8
9
10
11
12
  /**
   * 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
   *
6d9380f96   Cédric Dupont   Update sources OC...
13
14
15
   * @copyright Copyright (C) 2007-2014 fruux GmbH (https://fruux.com/).
   * @author Evert Pot (http://evertpot.com/)
   * @license http://sabre.io/license/ Modified BSD License
03e52840d   Kload   Init
16
   */
6d9380f96   Cédric Dupont   Update sources OC...
17
  class Plugin extends DAV\ServerPlugin {
03e52840d   Kload   Init
18
19
20
21
  
      /**
       * Reference to main server object
       *
6d9380f96   Cédric Dupont   Update sources OC...
22
       * @var Sabre\DAV\Server
03e52840d   Kload   Init
23
24
25
26
27
28
       */
      protected $server;
  
      /**
       * Authentication backend
       *
6d9380f96   Cédric Dupont   Update sources OC...
29
       * @var Backend\BackendInterface
03e52840d   Kload   Init
30
31
32
33
34
35
36
37
38
39
40
41
42
       */
      protected $authBackend;
  
      /**
       * The authentication realm.
       *
       * @var string
       */
      private $realm;
  
      /**
       * __construct
       *
6d9380f96   Cédric Dupont   Update sources OC...
43
       * @param Backend\BackendInterface $authBackend
03e52840d   Kload   Init
44
45
       * @param string $realm
       */
6d9380f96   Cédric Dupont   Update sources OC...
46
      public function __construct(Backend\BackendInterface $authBackend, $realm) {
03e52840d   Kload   Init
47
48
49
50
51
52
53
54
55
  
          $this->authBackend = $authBackend;
          $this->realm = $realm;
  
      }
  
      /**
       * Initializes the plugin. This function is automatically called by the server
       *
6d9380f96   Cédric Dupont   Update sources OC...
56
       * @param DAV\Server $server
03e52840d   Kload   Init
57
58
       * @return void
       */
6d9380f96   Cédric Dupont   Update sources OC...
59
      public function initialize(DAV\Server $server) {
03e52840d   Kload   Init
60
61
62
63
64
65
66
67
68
69
  
          $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
6d9380f96   Cédric Dupont   Update sources OC...
70
       * using DAV\Server::getPlugin
03e52840d   Kload   Init
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
       *
       * @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
       * @param string $uri
6d9380f96   Cédric Dupont   Update sources OC...
101
       * @throws Sabre\DAV\Exception\NotAuthenticated
03e52840d   Kload   Init
102
103
104
105
106
107
108
109
110
       * @return bool
       */
      public function beforeMethod($method, $uri) {
  
          $this->authBackend->authenticate($this->server,$this->realm);
  
      }
  
  }