diff --git a/lib/private/appframework/dependencyinjection/dicontainer.php b/lib/private/appframework/dependencyinjection/dicontainer.php index 98525ed320..3ed8a583b8 100644 --- a/lib/private/appframework/dependencyinjection/dicontainer.php +++ b/lib/private/appframework/dependencyinjection/dicontainer.php @@ -187,6 +187,7 @@ class DIContainer extends SimpleContainer implements IAppContainer{ } /** + * @deprecated use IUserSession->isLoggedIn() * @return boolean */ function isLoggedIn() { diff --git a/lib/private/user/session.php b/lib/private/user/session.php index 277aa1a047..53662d0095 100644 --- a/lib/private/user/session.php +++ b/lib/private/user/session.php @@ -137,6 +137,15 @@ class Session implements IUserSession, Emitter { } } + /** + * Checks wether the user is logged in + * + * @return bool if logged in + */ + public function isLoggedIn() { + return $this->getUser() !== null; + } + /** * set the login name * diff --git a/lib/public/appframework/iappcontainer.php b/lib/public/appframework/iappcontainer.php index a0b0c06881..ad8e5a2214 100644 --- a/lib/public/appframework/iappcontainer.php +++ b/lib/public/appframework/iappcontainer.php @@ -31,7 +31,7 @@ use OCP\IContainer; * * This container interface provides short cuts for app developers to access predefined app service. */ -interface IAppContainer extends IContainer{ +interface IAppContainer extends IContainer { /** * used to return the appname of the set application @@ -56,6 +56,7 @@ interface IAppContainer extends IContainer{ function registerMiddleWare($middleWare); /** + * @deprecated use IUserSession->isLoggedIn() * @return boolean */ function isLoggedIn(); diff --git a/lib/public/iusersession.php b/lib/public/iusersession.php index db4abe150d..4c5b4d1ba5 100644 --- a/lib/public/iusersession.php +++ b/lib/public/iusersession.php @@ -3,7 +3,9 @@ * ownCloud * * @author Bart Visscher + * @author Bernhard Posselt * @copyright 2013 Bart Visscher bartv@thisnet.nl + * @copyright 2014 Bernhard Posselt * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE @@ -62,4 +64,11 @@ interface IUserSession { * @return \OCP\IUser */ public function getUser(); + + /** + * Checks wether the user is logged in + * + * @return bool if logged in + */ + public function isLoggedIn(); } diff --git a/tests/lib/user/session.php b/tests/lib/user/session.php index aa1ea5841c..d441f80208 100644 --- a/tests/lib/user/session.php +++ b/tests/lib/user/session.php @@ -34,6 +34,34 @@ class Session extends \Test\TestCase { $this->assertEquals('foo', $user->getUID()); } + public function testIsLoggedIn() { + $session = $this->getMock('\OC\Session\Memory', array(), array('')); + $session->expects($this->once()) + ->method('get') + ->with('user_id') + ->will($this->returnValue(null)); + + $backend = $this->getMock('OC_User_Dummy'); + $backend->expects($this->once()) + ->method('userExists') + ->with('foo') + ->will($this->returnValue(true)); + + $manager = new \OC\User\Manager(); + $manager->registerBackend($backend); + + $userSession = new \OC\User\Session($manager, $session); + $isLoggedIn = $userSession->isLoggedIn(); + $this->assertFalse($isLoggedIn); + + $session->expects($this->once()) + ->method('get') + ->with('user_id') + ->will($this->returnValue('foo')); + $isLoggedIn = $userSession->isLoggedIn(); + $this->assertTrue($isLoggedIn); + } + public function testSetUser() { $session = $this->getMock('\OC\Session\Memory', array(), array('')); $session->expects($this->once())