diff --git a/apps/user_ldap/group_ldap.php b/apps/user_ldap/group_ldap.php
index b9d00fc78af385dcf34308a3777f64e6bab8eeb8..3b817c65b7610e6507bb8f890a49c1bb7c9c47a7 100644
--- a/apps/user_ldap/group_ldap.php
+++ b/apps/user_ldap/group_ldap.php
@@ -21,7 +21,7 @@
  *
  */
 
- class OC_GROUP_LDAP extends OC_Group_Backend {
+class OC_GROUP_LDAP extends OC_Group_Backend {
 // 	//group specific settings
 	protected $ldapGroupFilter;
 	protected $ldapGroupDisplayName;
@@ -40,7 +40,20 @@
 	 * Checks whether the user is member of a group or not.
 	 */
 	public function inGroup($uid, $gid) {
-		return array();
+		$filter = OC_LDAP::combineFilterWithAnd(array(
+			$this->ldapGroupFilter,
+			LDAP_GROUP_MEMBER_ASSOC_ATTR.'='.$uid,
+			$this->ldapGroupDisplayName.'='.$gid
+		));
+		$groups = OC_LDAP::search($filter, $this->ldapGroupDisplayName);
+
+		if(count($groups) == 1) {
+			return true;
+		} else if(count($groups) < 1) {
+			return false;
+		} else {
+			throw new Exception('Too many groups of the same name!? – this excpetion should never been thrown :)');
+		}
 	}
 
 	/**
@@ -79,4 +92,4 @@
 		}
 	}
 
- }
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/apps/user_ldap/lib_ldap.php b/apps/user_ldap/lib_ldap.php
index 62e478597bd77124e069254d6d42b7380f0e4020..afb442e05f3afb0654542a54c610323d14bde2e6 100644
--- a/apps/user_ldap/lib_ldap.php
+++ b/apps/user_ldap/lib_ldap.php
@@ -21,7 +21,9 @@
  *
  */
 
- class OC_LDAP {
+define(LDAP_GROUP_MEMBER_ASSOC_ATTR,'memberUid');
+
+class OC_LDAP {
 	static protected $ldapConnectionRes = false;
 	static protected $configured = false;
 
@@ -64,6 +66,48 @@
 		return $findings;
 	}
 
+	/**
+	 * @brief combines the input filters with AND
+	 * @param $filters array, the filters to connect
+	 * @returns the combined filter
+	 *
+	 * Combines Filter arguments with AND
+	 */
+	static public function combineFilterWithAnd($filters) {
+		return self::combineFilter($filters,'&');
+	}
+
+	/**
+	 * @brief combines the input filters with AND
+	 * @param $filters array, the filters to connect
+	 * @returns the combined filter
+	 *
+	 * Combines Filter arguments with AND
+	 */
+	static public function combineFilterWithOr($filters) {
+		return self::combineFilter($filters,'|');
+	}
+
+	/**
+	 * @brief combines the input filters with given operator
+	 * @param $filters array, the filters to connect
+	 * @param $operator either & or |
+	 * @returns the combined filter
+	 *
+	 * Combines Filter arguments with AND
+	 */
+	static private function combineFilter($filters, $operator) {
+		$combinedFilter = '('.$operator;
+		foreach($filters as $filter) {
+		    if(substr($filter,0,1) != '(') {
+				$filter = '('.$filter.')';
+		    }
+		    $combinedFilter.=$filter;
+		}
+		$combinedFilter.=')';
+		return $combinedFilter;
+	}
+
 	/**
 	 * Returns the LDAP handler
 	 */
diff --git a/apps/user_ldap/tests/group_ldap.php b/apps/user_ldap/tests/group_ldap.php
index 277a234892585311f8679b75787fd6b1086a59d2..b328153b8b543f708ba6801725685969129498c9 100644
--- a/apps/user_ldap/tests/group_ldap.php
+++ b/apps/user_ldap/tests/group_ldap.php
@@ -31,6 +31,10 @@ class Test_Group_Ldap extends UnitTestCase {
 
  		$this->assertIsA(OC_Group::getGroups(),gettype(array()));
 		$this->assertIsA($group_ldap->getGroups(),gettype(array()));
+
+		$this->assertFalse(OC_Group::inGroup('john','dosers'),gettype(false));
+		$this->assertFalse($group_ldap->inGroup('john','dosers'),gettype(false));
+		//TODO: check also for expected true result. This backend won't be able to do any modifications, maybe use a dummy for this.
 	}
 
 }