]> source.dussan.org Git - nextcloud-server.git/commitdiff
Add UserSession to server container
authorBart Visscher <bartv@thisnet.nl>
Fri, 20 Sep 2013 10:45:56 +0000 (12:45 +0200)
committerBart Visscher <bartv@thisnet.nl>
Fri, 20 Sep 2013 12:32:43 +0000 (14:32 +0200)
lib/public/iservercontainer.php
lib/public/iusersession.php [new file with mode: 0644]
lib/server.php
lib/user.php

index 1725b7c74e04bdd8d6c68495e6bae8312d57b191..ad714276660b5399d72f32b0be16425d94ed0bfd 100644 (file)
@@ -62,6 +62,13 @@ interface IServerContainer {
         */
        function getRootFolder();
 
+       /**
+        * Returns the user session
+        *
+        * @return \OCP\IUserSession
+        */
+       function getUserSession();
+
        /**
         * Returns an ICache instance
         *
diff --git a/lib/public/iusersession.php b/lib/public/iusersession.php
new file mode 100644 (file)
index 0000000..5dc1ecf
--- /dev/null
@@ -0,0 +1,30 @@
+<?php
+/**
+ * Copyright (c) 2013 Bart Visscher <bartv@thisnet.nl>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ * 
+ */
+
+namespace OCP;
+
+/**
+ * User session
+ */
+interface IUserSession {
+       /**
+        * Do a user login
+        * @param string $user the username
+        * @param string $password the password
+        * @return bool true if successful
+        */
+       public function login($user, $password);
+
+       /**
+        * @brief Logs the user out including all the session data
+        * Logout, destroys session
+        */
+       public function logout();
+
+}
index f4dc22a2be49da1f52078214bc8867aebcb7c959..316ed39665bb015081b7b5941bb57125261ebbd1 100644 (file)
@@ -56,6 +56,47 @@ class Server extends SimpleContainer implements IServerContainer {
                        $view = new View();
                        return new Root($manager, $view, $user);
                });
+               $this->registerService('UserManager', function($c) {
+                       return new \OC\User\Manager();
+               });
+               $this->registerService('UserSession', function($c) {
+                       $manager = $c->query('UserManager');
+                       $userSession = new \OC\User\Session($manager, \OC::$session);
+                       $userSession->listen('\OC\User', 'preCreateUser', function ($uid, $password) {
+                               \OC_Hook::emit('OC_User', 'pre_createUser', array('run' => true, 'uid' => $uid, 'password' => $password));
+                       });
+                       $userSession->listen('\OC\User', 'postCreateUser', function ($user, $password) {
+                               /** @var $user \OC\User\User */
+                               \OC_Hook::emit('OC_User', 'post_createUser', array('uid' => $user->getUID(), 'password' => $password));
+                       });
+                       $userSession->listen('\OC\User', 'preDelete', function ($user) {
+                               /** @var $user \OC\User\User */
+                               \OC_Hook::emit('OC_User', 'pre_deleteUser', array('run' => true, 'uid' => $user->getUID()));
+                       });
+                       $userSession->listen('\OC\User', 'postDelete', function ($user) {
+                               /** @var $user \OC\User\User */
+                               \OC_Hook::emit('OC_User', 'post_deleteUser', array('uid' => $user->getUID()));
+                       });
+                       $userSession->listen('\OC\User', 'preSetPassword', function ($user, $password, $recoveryPassword) {
+                               /** @var $user \OC\User\User */
+                               \OC_Hook::emit('OC_User', 'pre_setPassword', array('run' => true, 'uid' => $user->getUID(), 'password' => $password, 'recoveryPassword' => $recoveryPassword));
+                       });
+                       $userSession->listen('\OC\User', 'postSetPassword', function ($user, $password, $recoveryPassword) {
+                               /** @var $user \OC\User\User */
+                               \OC_Hook::emit('OC_User', 'post_setPassword', array('run' => true, 'uid' => $user->getUID(), 'password' => $password, 'recoveryPassword' => $recoveryPassword));
+                       });
+                       $userSession->listen('\OC\User', 'preLogin', function ($uid, $password) {
+                               \OC_Hook::emit('OC_User', 'pre_login', array('run' => true, 'uid' => $uid, 'password' => $password));
+                       });
+                       $userSession->listen('\OC\User', 'postLogin', function ($user, $password) {
+                               /** @var $user \OC\User\User */
+                               \OC_Hook::emit('OC_User', 'post_login', array('run' => true, 'uid' => $user->getUID(), 'password' => $password));
+                       });
+                       $userSession->listen('\OC\User', 'logout', function () {
+                               \OC_Hook::emit('OC_User', 'logout', array());
+                       });
+                       return $userSession;
+               });
                $this->registerService('UserCache', function($c) {
                        return new UserCache();
                });
@@ -97,6 +138,20 @@ class Server extends SimpleContainer implements IServerContainer {
                return $this->query('RootFolder');
        }
 
+       /**
+        * @return \OC\User\Manager
+        */
+       function getUserManager() {
+               return $this->query('UserManager');
+       }
+
+       /**
+        * @return \OC\User\Session
+        */
+       function getUserSession() {
+               return $this->query('UserSession');
+       }
+
        /**
         * Returns an ICache instance
         *
index 0f6f40aec9ae414fc0318f2d33ef1fa2bcb3de9f..7f6a296c3eaba6141e6d44e2853e901337727a5f 100644 (file)
  *   logout()
  */
 class OC_User {
-       public static $userSession = null;
-
        public static function getUserSession() {
-               if (!self::$userSession) {
-                       $manager = new \OC\User\Manager();
-                       self::$userSession = new \OC\User\Session($manager, \OC::$session);
-                       self::$userSession->listen('\OC\User', 'preCreateUser', function ($uid, $password) {
-                               \OC_Hook::emit('OC_User', 'pre_createUser', array('run' => true, 'uid' => $uid, 'password' => $password));
-                       });
-                       self::$userSession->listen('\OC\User', 'postCreateUser', function ($user, $password) {
-                               /** @var $user \OC\User\User */
-                               \OC_Hook::emit('OC_User', 'post_createUser', array('uid' => $user->getUID(), 'password' => $password));
-                       });
-                       self::$userSession->listen('\OC\User', 'preDelete', function ($user) {
-                               /** @var $user \OC\User\User */
-                               \OC_Hook::emit('OC_User', 'pre_deleteUser', array('run' => true, 'uid' => $user->getUID()));
-                       });
-                       self::$userSession->listen('\OC\User', 'postDelete', function ($user) {
-                               /** @var $user \OC\User\User */
-                               \OC_Hook::emit('OC_User', 'post_deleteUser', array('uid' => $user->getUID()));
-                       });
-                       self::$userSession->listen('\OC\User', 'preSetPassword', function ($user, $password, $recoveryPassword) {
-                               /** @var $user \OC\User\User */
-                               OC_Hook::emit('OC_User', 'pre_setPassword', array('run' => true, 'uid' => $user->getUID(), 'password' => $password, 'recoveryPassword' => $recoveryPassword));
-                       });
-                       self::$userSession->listen('\OC\User', 'postSetPassword', function ($user, $password, $recoveryPassword) {
-                               /** @var $user \OC\User\User */
-                               OC_Hook::emit('OC_User', 'post_setPassword', array('run' => true, 'uid' => $user->getUID(), 'password' => $password, 'recoveryPassword' => $recoveryPassword));
-                       });
-                       self::$userSession->listen('\OC\User', 'preLogin', function ($uid, $password) {
-                               \OC_Hook::emit('OC_User', 'pre_login', array('run' => true, 'uid' => $uid, 'password' => $password));
-                       });
-                       self::$userSession->listen('\OC\User', 'postLogin', function ($user, $password) {
-                               /** @var $user \OC\User\User */
-                               \OC_Hook::emit('OC_User', 'post_login', array('run' => true, 'uid' => $user->getUID(), 'password' => $password));
-                       });
-                       self::$userSession->listen('\OC\User', 'logout', function () {
-                               \OC_Hook::emit('OC_User', 'logout', array());
-                       });
-               }
-               return self::$userSession;
+               return OC::$server->getUserSession();
        }
 
        /**
         * @return \OC\User\Manager
         */
        public static function getManager() {
-               return self::getUserSession()->getManager();
+               return OC::$server->getUserManager();
        }
 
        private static $_backends = array();