diff --git a/lib/private/appframework/dependencyinjection/dicontainer.php b/lib/private/appframework/dependencyinjection/dicontainer.php
index 517ada2d20585567cf062508a694d3547a497475..dc57ef4c1675f3d42092e28b6b85fe65229beb5b 100644
--- a/lib/private/appframework/dependencyinjection/dicontainer.php
+++ b/lib/private/appframework/dependencyinjection/dicontainer.php
@@ -188,6 +188,7 @@ class DIContainer extends SimpleContainer implements IAppContainer{
 	}
 
 	/**
+	 * @deprecated use IUserSession->isLoggedIn()
 	 * @return boolean
 	 */
 	function isLoggedIn() {
@@ -195,8 +196,7 @@ class DIContainer extends SimpleContainer implements IAppContainer{
 	}
 
 	/**
-	 * @deprecated use the groupmanager instead to find out if the user is in
-	 * the admin group
+	 * @deprecated use IGroupManager->isAdmin($userId)
 	 * @return boolean
 	 */
 	function isAdminUser() {
diff --git a/lib/private/group/manager.php b/lib/private/group/manager.php
index be7bf972693f77eb0d1db82b25105854e68d4170..8dcf14fc1d299cda05e8398fd4cb29ee5da8f822 100644
--- a/lib/private/group/manager.php
+++ b/lib/private/group/manager.php
@@ -170,7 +170,14 @@ class Manager extends PublicEmitter implements IGroupManager {
 	 * @return \OC\Group\Group[]
 	 */
 	public function getUserGroups($user) {
-		$uid = $user->getUID();
+		return $this->getUserIdGroups($user->getUID());
+	}
+
+	/**
+	 * @param string $uid the user id
+	 * @return \OC\Group\Group[]
+	 */
+	public function getUserIdGroups($uid) {
 		if (isset($this->cachedUserGroups[$uid])) {
 			return $this->cachedUserGroups[$uid];
 		}
@@ -184,7 +191,26 @@ class Manager extends PublicEmitter implements IGroupManager {
 		$this->cachedUserGroups[$uid] = $groups;
 		return $this->cachedUserGroups[$uid];
 	}
-	
+
+	/**
+	 * Checks if a userId is in the admin group
+	 * @param string $userId
+	 * @return bool if admin
+	 */
+	public function isAdmin($userId) {
+		return $this->isInGroup($userId, 'admin');
+	}
+
+	/**
+	 * Checks if a userId is in a group
+	 * @param string $userId
+	 * @param group $group
+	 * @return bool if in group
+	 */
+	public function isInGroup($userId, $group) {
+		return array_key_exists($group, $this->getUserIdGroups($userId));
+	}
+
 	/**
 	 * get a list of group ids for a user
 	 * @param \OC\User\User $user
diff --git a/lib/private/user/session.php b/lib/private/user/session.php
index 277aa1a047e8b58c48bf21377bf09f2ac1c8bcd9..53662d00952244738f34f57a2b311282603204f6 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 3621d69a54287632faf1435335aef4666704bfea..cb75bf4026ce182b622f2a63ffab5f5c8a31e34e 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
@@ -57,11 +57,13 @@ interface IAppContainer extends IContainer{
 	function registerMiddleWare($middleWare);
 
 	/**
+	 * @deprecated use IUserSession->isLoggedIn()
 	 * @return boolean
 	 */
 	function isLoggedIn();
 
 	/**
+	 * @deprecated use IGroupManager->isAdmin($userId)
 	 * @return boolean
 	 * @deprecated use the groupmanager instead to find out if the user is in
 	 * the admin group
diff --git a/lib/public/igroupmanager.php b/lib/public/igroupmanager.php
index dc69044c4901a3a67282263050bd35842127a991..8f468574c6babdc5b620f86369307dbb883a4a2d 100644
--- a/lib/public/igroupmanager.php
+++ b/lib/public/igroupmanager.php
@@ -80,4 +80,19 @@ interface IGroupManager {
 	 * @return array an array of display names (value) and user ids (key)
 	 */
 	public function displayNamesInGroup($gid, $search = '', $limit = -1, $offset = 0);
+
+	/**
+	 * Checks if a userId is in the admin group
+	 * @param string $userId
+	 * @return bool if admin
+	 */
+	public function isAdmin($userId);
+
+	/**
+	 * Checks if a userId is in a group
+	 * @param string $userId
+	 * @param group $group
+	 * @return bool if in group
+	 */
+	public function isInGroup($userId, $group);
 }
diff --git a/lib/public/iusersession.php b/lib/public/iusersession.php
index db4abe150d2bf78c6fee2cdb7c245055e8207219..4c5b4d1ba51cf8556929180283cfa204c2629643 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 <dev@bernhard-posselt.com>
  *
  * 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/group/manager.php b/tests/lib/group/manager.php
index f72ea8e912f982a5510455df926f30a6c3f6cd34..e3462caf806a70c688ac9301c1ac3fafd57e4250 100644
--- a/tests/lib/group/manager.php
+++ b/tests/lib/group/manager.php
@@ -304,6 +304,78 @@ class Manager extends \Test\TestCase {
 		$this->assertEquals('group1', $group1->getGID());
 	}
 
+	public function testInGroup() {
+		/**
+		 * @var \PHPUnit_Framework_MockObject_MockObject | \OC_Group_Backend $backend
+		 */
+		$backend = $this->getMock('\OC_Group_Database');
+		$backend->expects($this->once())
+			->method('getUserGroups')
+			->with('user1')
+			->will($this->returnValue(array('group1', 'admin', 'group2')));
+		$backend->expects($this->any())
+			->method('groupExists')
+			->will($this->returnValue(true));
+
+		/**
+		 * @var \OC\User\Manager $userManager
+		 */
+		$userManager = $this->getMock('\OC\User\Manager');
+		$userBackend = $this->getMock('\OC_User_Backend');
+		$manager = new \OC\Group\Manager($userManager);
+		$manager->addBackend($backend);
+
+		$this->assertTrue($manager->isInGroup('user1', 'group1'));
+	}
+
+	public function testIsAdmin() {
+		/**
+		 * @var \PHPUnit_Framework_MockObject_MockObject | \OC_Group_Backend $backend
+		 */
+		$backend = $this->getMock('\OC_Group_Database');
+		$backend->expects($this->once())
+			->method('getUserGroups')
+			->with('user1')
+			->will($this->returnValue(array('group1', 'admin', 'group2')));
+		$backend->expects($this->any())
+			->method('groupExists')
+			->will($this->returnValue(true));
+
+		/**
+		 * @var \OC\User\Manager $userManager
+		 */
+		$userManager = $this->getMock('\OC\User\Manager');
+		$userBackend = $this->getMock('\OC_User_Backend');
+		$manager = new \OC\Group\Manager($userManager);
+		$manager->addBackend($backend);
+
+		$this->assertTrue($manager->isAdmin('user1'));
+	}
+
+	public function testNotAdmin() {
+		/**
+		 * @var \PHPUnit_Framework_MockObject_MockObject | \OC_Group_Backend $backend
+		 */
+		$backend = $this->getMock('\OC_Group_Database');
+		$backend->expects($this->once())
+			->method('getUserGroups')
+			->with('user1')
+			->will($this->returnValue(array('group1', 'group2')));
+		$backend->expects($this->any())
+			->method('groupExists')
+			->will($this->returnValue(true));
+
+		/**
+		 * @var \OC\User\Manager $userManager
+		 */
+		$userManager = $this->getMock('\OC\User\Manager');
+		$userBackend = $this->getMock('\OC_User_Backend');
+		$manager = new \OC\Group\Manager($userManager);
+		$manager->addBackend($backend);
+
+		$this->assertFalse($manager->isAdmin('user1'));
+	}
+
 	public function testGetUserGroupsMultipleBackends() {
 		/**
 		 * @var \PHPUnit_Framework_MockObject_MockObject | \OC_Group_Backend $backend1
diff --git a/tests/lib/user/session.php b/tests/lib/user/session.php
index aa1ea5841c0573c49c3fcd9796f4c643211e6c7c..4dc7f29c5b806ae17adbe992e57290c0b061c6e7 100644
--- a/tests/lib/user/session.php
+++ b/tests/lib/user/session.php
@@ -34,6 +34,46 @@ 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('foo'));
+
+		$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->assertTrue($isLoggedIn);
+	}
+
+	public function testNotLoggedIn() {
+		$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->never())
+			->method('userExists');
+
+		$manager = new \OC\User\Manager();
+		$manager->registerBackend($backend);
+
+		$userSession = new \OC\User\Session($manager, $session);
+		$isLoggedIn = $userSession->isLoggedIn();
+		$this->assertFalse($isLoggedIn);
+	}
+
 	public function testSetUser() {
 		$session = $this->getMock('\OC\Session\Memory', array(), array(''));
 		$session->expects($this->once())