From 9fe46ef0937d91c50f8cb2578437bfd740e8c49c Mon Sep 17 00:00:00 2001
From: "Aldo \"xoen\" Giambelluca" <xoen@xoen.org>
Date: Mon, 19 Jul 2010 21:33:29 +0200
Subject: [PATCH] OC_USER now is an abstract class (OC_USER_ABSTRACT)

At start the choosen user manager is created
(e.g. OC_USER_DATABASE, OC_USER_LDAP)
and put into the global variable `$userManager`.

This is the variable to use instead of `OC_USER` class.

TODO: A better name than $userManager?
---
 inc/User/database.php |  26 +++++-----
 inc/User/ldap.php     |   3 +-
 inc/User/mod_auth.php |   4 +-
 inc/lib_base.php      |  87 ++++++++++++++++++++------------
 inc/lib_config.php    | 115 +++++++++++++++++++++++-------------------
 inc/lib_user.php      |  98 ++++++-----------------------------
 6 files changed, 154 insertions(+), 179 deletions(-)

diff --git a/inc/User/database.php b/inc/User/database.php
index d0bcf56fa9..c4239eb07c 100755
--- a/inc/User/database.php
+++ b/inc/User/database.php
@@ -21,13 +21,15 @@
 * 
 */
 
+require_once $SERVERROOT . '/inc/lib_user.php';
+
 
 
 /**
  * Class for usermanagement in a SQL Database (e.g. MySQL, SQLite)
  *
  */
-class OC_USER_Database extends OC_USER {
+class OC_USER_DATABASE extends OC_USER_ABSTRACT {
 
 	/**
 	 * Check if the login button is pressed and logg the user in
@@ -35,7 +37,7 @@ class OC_USER_Database extends OC_USER {
 	 */
 	public static function loginLisener() {
 		if ( isset($_POST['loginbutton']) AND isset($_POST['password']) AND isset($_POST['login']) ) {
-			if ( OC_USER::login($_POST['login'], $_POST['password']) ) {
+			if ( self::login($_POST['login'], $_POST['password']) ) {
 				echo 1;
 				OC_LOG::event($_SESSION['username'], 1, '');
 				echo 2;
@@ -62,7 +64,7 @@ class OC_USER_Database extends OC_USER {
 	public static function createUser($username, $password) {
 		global $CONFIG_DBTABLEPREFIX;
 
-		if ( 0 !== OC_USER::getUserId($username, true) ) {
+		if ( 0 !== self::getUserId($username, true) ) {
 			return false;
 		} else {
 			$usernameClean = strtolower($username);
@@ -132,7 +134,7 @@ class OC_USER_Database extends OC_USER {
 	public static function createGroup($groupName) {
 		global $CONFIG_DBTABLEPREFIX;
 
-		if ( 0 === OC_USER::getGroupId($groupName, true) ) {
+		if ( 0 === self::getGroupId($groupName, true) ) {
 			$groupName = OC_DB::escape($groupName);
 			$query = "INSERT INTO  `{$CONFIG_DBTABLEPREFIX}groups` (`group_name`) VALUES ('$groupName')";
 			$result = OC_DB::query($query);
@@ -223,8 +225,8 @@ class OC_USER_Database extends OC_USER {
 	public static function inGroup($username, $groupName) {
 		global $CONFIG_DBTABLEPREFIX;
 
-		$userId = OC_USER::getUserId($username);
-		$groupId = OC_USER::getGroupId($groupName);
+		$userId = self::getUserId($username);
+		$groupId = self::getGroupId($groupName);
 		if ( ($groupId > 0) AND ($userId > 0) ) {
 			$query = "SELECT * FROM  {$CONFIG_DBTABLEPREFIX}user_group WHERE group_id = '$groupId'  AND user_id = '$userId';";
 			$result = OC_DB::select($query);
@@ -245,9 +247,9 @@ class OC_USER_Database extends OC_USER {
 	public static function addToGroup($username, $groupName) {
 		global $CONFIG_DBTABLEPREFIX;
 
-		if ( !OC_USER::inGroup($username, $groupName) ) {
-			$userId = OC_USER::getuserid($username);
-			$groupId = OC_USER::getgroupid($groupName);
+		if ( !self::inGroup($username, $groupName) ) {
+			$userId = self::getuserid($username);
+			$groupId = self::getgroupid($groupName);
 			if ( (0 !== $groupId) AND (0 !== $userId) ) {
 				$query = "INSERT INTO `{$CONFIG_DBTABLEPREFIX}user_group` (`user_id` ,`group_id`) VALUES ('$userId',  '$groupId');";
 				$result = OC_DB::query($query);
@@ -275,14 +277,14 @@ class OC_USER_Database extends OC_USER {
 	public static function getUserGroups($username) {
 		global $CONFIG_DBTABLEPREFIX;
 
-		$userId = OC_USER::getUserId($username);
+		$userId = self::getUserId($username);
 		$query = "SELECT group_id FROM {$CONFIG_DBTABLEPREFIX}user_group WHERE user_id = '$userId'";
 		$result = OC_DB::select($query);
 		$groups = array();
 		if ( is_array($result) ) {
 			foreach ( $result as $group ) {
 				$groupId = $group['group_id'];
-				$groups[] = OC_USER::getGroupName($groupId);
+				$groups[] = self::getGroupName($groupId);
 			}
 		}
 
@@ -297,7 +299,7 @@ class OC_USER_Database extends OC_USER {
 		global $CONFIG_DBTABLEPREFIX;
 
 		$password = sha1($password);
-		$userId = OC_USER::getUserId($username);
+		$userId = self::getUserId($username);
 		$query = "UPDATE {$CONFIG_DBTABLEPREFIX}users SET user_password = '$password' WHERE user_id ='$userId'";
 		$result = OC_DB::query($query);
 
diff --git a/inc/User/ldap.php b/inc/User/ldap.php
index 37ca441fc0..9ce36975bd 100755
--- a/inc/User/ldap.php
+++ b/inc/User/ldap.php
@@ -21,7 +21,8 @@
 * 
 */
 
-require_once 'mod_auth.php';
+require_once $SERVERROOT . '/inc/lib_user.php';
+require_once $SERVERROOT . '/inc/User/mod_auth.php';
 
 
 
diff --git a/inc/User/mod_auth.php b/inc/User/mod_auth.php
index 059bb7b5aa..8bab4394a5 100755
--- a/inc/User/mod_auth.php
+++ b/inc/User/mod_auth.php
@@ -21,13 +21,15 @@
 * 
 */
 
+require_once $SERVERROOT . '/inc/lib_user.php';
+
 
 
 /**
  * Class for usermanagement in a SQL Database (e.g. MySQL, SQLite)
  *
  */
-class OC_USER_MOD_AUTH extends OC_USER {
+class OC_USER_MOD_AUTH extends OC_USER_ABSTRACT {
 	
 	/**
 	 * Check if the login button is pressed and logg the user in
diff --git a/inc/lib_base.php b/inc/lib_base.php
index df6df15cc2..7068aad3f4 100755
--- a/inc/lib_base.php
+++ b/inc/lib_base.php
@@ -48,20 +48,20 @@ if($WEBROOT!='' and $WEBROOT[0]!=='/'){
 // set_include_path(get_include_path().PATH_SEPARATOR.$SERVERROOT.PATH_SEPARATOR.$SERVERROOT.'/inc'.PATH_SEPARATOR.$SERVERROOT.'/config');
 
 // define default config values
-$CONFIG_INSTALLED=false;
-$CONFIG_DATADIRECTORY=$SERVERROOT.'/data';
-$CONFIG_BACKUPDIRECTORY=$SERVERROOT.'/backup';
-$CONFIG_HTTPFORCESSL=false;
-$CONFIG_ENABLEBACKUP=false;
-$CONFIG_DATEFORMAT='j M Y G:i';
-$CONFIG_DBNAME='owncloud';
-$CONFIG_DBTYPE='sqlite';
+$CONFIG_INSTALLED = false;
+$CONFIG_DATADIRECTORY = $SERVERROOT . '/data';
+$CONFIG_BACKUPDIRECTORY = $SERVERROOT . '/backup';
+$CONFIG_HTTPFORCESSL = false;
+$CONFIG_ENABLEBACKUP = false;
+$CONFIG_DATEFORMAT = 'j M Y G:i';
+$CONFIG_DBNAME = 'owncloud';
+$CONFIG_DBTYPE = 'sqlite';
 
 // include the generated configfile
-@include_once($SERVERROOT.'/config/config.php');
+@include_once($SERVERROOT . '/config/config.php');
 
-
-$CONFIG_DATADIRECTORY_ROOT=$CONFIG_DATADIRECTORY;// store this in a seperate variable so we can change the data directory to jail users.
+// Store this in a seperate variable so we can change the data directory to jail users.
+$CONFIG_DATADIRECTORY_ROOT = $CONFIG_DATADIRECTORY;
 // redirect to https site if configured
 if(isset($CONFIG_HTTPFORCESSL) and $CONFIG_HTTPFORCESSL){
   if(!isset($_SERVER['HTTPS']) or $_SERVER['HTTPS'] != 'on') { 
@@ -86,10 +86,33 @@ oc_require_once('lib_connect.php');
 oc_require_once('lib_remotestorage.php');
 
 
+
+// Load the choosen user manager
+if ( isset($CONFIG_BACKEND) ) {
+	switch ( $CONFIG_BACKEND ) {
+		case 'mysql':
+		case 'sqlite':
+			require_once 'User/database.php';
+			$userManager = new OC_USER_DATABASE();
+			break;
+		case 'ldap':
+			require_once 'User/ldap.php';
+			$userManager = new OC_USER_LDAP();
+			break;
+		default:
+			require_once 'User/database.php';
+			$userManager = new OC_USER_DATABASE();
+			break;
+	}
+} else {
+	require_once 'User/database.php';
+	$userManager = new OC_USER_DATABASE();
+}
+
 if(!is_dir($CONFIG_DATADIRECTORY_ROOT)){
 	@mkdir($CONFIG_DATADIRECTORY_ROOT) or die("Can't create data directory ($CONFIG_DATADIRECTORY_ROOT), you can usually fix this by setting the owner of '$SERVERROOT' to the user that the web server uses (www-data for debian/ubuntu)");
 }
-if(OC_USER::isLoggedIn()){
+if ( $userManager::isLoggedIn() ) {
 	//jail the user in a seperate data folder
 	$CONFIG_DATADIRECTORY=$CONFIG_DATADIRECTORY_ROOT.'/'.$_SESSION['username_clean'];
 	if(!is_dir($CONFIG_DATADIRECTORY)){
@@ -128,11 +151,11 @@ if(isset($plugins[0])) foreach($plugins as $plugin) require_once($SERVERROOT.'/p
 
 
 // check if the server is correctly configured for ownCloud
-OC_UTIL::checkserver();
+OC_UTIL::checkServer();
 
 // listen for login or logout actions
-OC_USER::logoutlisener();
-$loginresult=OC_USER::loginlisener();
+$userManager::logoutLisener();
+$loginresult = $userManager::loginLisener();
 
 /**
  * Class for utility functions
@@ -262,25 +285,27 @@ class OC_UTIL {
    * show the main navigation
    *
    */
-  public static function showNavigation(){
-    global $WEBROOT;
-    global $SERVERROOT;
-    echo('<table class="center" cellpadding="5" cellspacing="0" border="0"><tr>');
-    echo('<td class="navigationitem1"><a href="'.$WEBROOT.'/">'.$_SESSION['username'].'</a></td>');
-    if($_SERVER['SCRIPT_NAME']==$WEBROOT.'/index.php') echo('<td class="navigationitemselected"><a href="'.$WEBROOT.'/">Files</a></td>'); else echo('<td class="navigationitem"><a href="'.$WEBROOT.'/">Files</a></td>');
+	public static function showNavigation(){
+		global $WEBROOT;
+		global $SERVERROOT;
+		global $userManager;
 
-    foreach(OC_UTIL::$NAVIGATION as $NAVI) {
-      if(dirname($_SERVER['SCRIPT_NAME'])==$WEBROOT.$NAVI['url']) echo('<td class="navigationitemselected"><a href="'.$WEBROOT.$NAVI['url'].'">'.$NAVI['name'].'</a></td>'); else echo('<td class="navigationitem"><a href="'.$WEBROOT.$NAVI['url'].'">'.$NAVI['name'].'</a></td>');
-    }
+		echo('<table class="center" cellpadding="5" cellspacing="0" border="0"><tr>');
+		echo('<td class="navigationitem1"><a href="'.$WEBROOT.'/">'.$_SESSION['username'].'</a></td>');
+		if ($_SERVER['SCRIPT_NAME']==$WEBROOT.'/index.php') echo('<td class="navigationitemselected"><a href="'.$WEBROOT.'/">Files</a></td>'); else echo('<td class="navigationitem"><a href="'.$WEBROOT.'/">Files</a></td>');
+
+		foreach(OC_UTIL::$NAVIGATION as $NAVI) {
+			if(dirname($_SERVER['SCRIPT_NAME'])==$WEBROOT.$NAVI['url']) echo('<td class="navigationitemselected"><a href="'.$WEBROOT.$NAVI['url'].'">'.$NAVI['name'].'</a></td>'); else echo('<td class="navigationitem"><a href="'.$WEBROOT.$NAVI['url'].'">'.$NAVI['name'].'</a></td>');
+		}
 
-	if($_SERVER['SCRIPT_NAME']==$WEBROOT.'/log/index.php') echo('<td class="navigationitemselected"><a href="'.$WEBROOT.'/log">Log</a></td>'); else echo('<td class="navigationitem"><a href="'.$WEBROOT.'/log">Log</a></td>');
-	if($_SERVER['SCRIPT_NAME']==$WEBROOT.'/settings/index.php') echo('<td class="navigationitemselected"><a href="'.$WEBROOT.'/settings">Settings</a></td>'); else echo('<td class="navigationitem"><a href="'.$WEBROOT.'/settings">Settings</a></td>');
-	if(OC_USER::ingroup($_SESSION['username'],'admin')){
-		if($_SERVER['SCRIPT_NAME']==$WEBROOT.'/admin/index.php') echo('<td class="navigationitemselected"><a href="'.$WEBROOT.'/admin">Admin Panel</a></td>'); else echo('<td class="navigationitem"><a href="'.$WEBROOT.'/admin">Admin Panel</a></td>');
+		if($_SERVER['SCRIPT_NAME']==$WEBROOT.'/log/index.php') echo('<td class="navigationitemselected"><a href="'.$WEBROOT.'/log">Log</a></td>'); else echo('<td class="navigationitem"><a href="'.$WEBROOT.'/log">Log</a></td>');
+		if($_SERVER['SCRIPT_NAME']==$WEBROOT.'/settings/index.php') echo('<td class="navigationitemselected"><a href="'.$WEBROOT.'/settings">Settings</a></td>'); else echo('<td class="navigationitem"><a href="'.$WEBROOT.'/settings">Settings</a></td>');
+		if ( $userManager::inGroup($_SESSION['username'], 'admin') ) {
+			if($_SERVER['SCRIPT_NAME']==$WEBROOT.'/admin/index.php') echo('<td class="navigationitemselected"><a href="'.$WEBROOT.'/admin">Admin Panel</a></td>'); else echo('<td class="navigationitem"><a href="'.$WEBROOT.'/admin">Admin Panel</a></td>');
+		}
+		echo('<td class="navigationitem"><a href="?logoutbutton=1">Logout</a></td>');
+		echo('</tr></table>');
 	}
-    echo('<td class="navigationitem"><a href="?logoutbutton=1">Logout</a></td>');
-    echo('</tr></table>');
-  }
 
 
   /**
diff --git a/inc/lib_config.php b/inc/lib_config.php
index ff4ead8b6b..8418cd574e 100644
--- a/inc/lib_config.php
+++ b/inc/lib_config.php
@@ -1,5 +1,7 @@
 <?php
-class OC_CONFIG{
+
+class OC_CONFIG {
+
    /**
    * show the configform
    *
@@ -14,66 +16,74 @@ class OC_CONFIG{
     oc_require('templates/configform.php');
   }
   
-  /**
-   * show the configform
-   *
-   */
-  public static function showAdminForm(){
-    global $CONFIG_ADMINLOGIN;
-    global $CONFIG_ADMINPASSWORD;
-    global $CONFIG_DATADIRECTORY;
-    global $CONFIG_HTTPFORCESSL;
-    global $CONFIG_DATEFORMAT;
-    global $CONFIG_DBNAME;
-	global $CONFIG_DBTABLEPREFIX;
-    global $CONFIG_INSTALLED;
-		$allow=false;
-		if(!$CONFIG_INSTALLED){
-			$allow=true;
-		}elseif(OC_USER::isLoggedIn()){
-			if(OC_USER::ingroup($_SESSION['username'],'admin')){
-				$allow=true;
+	/**
+	* show the configform
+	*
+	*/
+	public static function showAdminForm(){
+		global $CONFIG_ADMINLOGIN;
+		global $CONFIG_ADMINPASSWORD;
+		global $CONFIG_DATADIRECTORY;
+		global $CONFIG_HTTPFORCESSL;
+		global $CONFIG_DATEFORMAT;
+		global $CONFIG_DBNAME;
+		global $CONFIG_DBTABLEPREFIX;
+		global $CONFIG_INSTALLED;
+
+		global $userManager;
+
+		$allow = false;
+		if ( !$CONFIG_INSTALLED ) {
+			$allow = true;
+		} elseif ( $userManager::isLoggedIn() ) {
+			if ( $userManager::inGroup($_SESSION['username'], 'admin') ) {
+				$allow = true;
 			}
 		}
-    if($allow){
-		oc_require('templates/adminform.php');
+
+		if ( $allow ) {
+			oc_require('templates/adminform.php');
+		}
 	}
-  }
 
 	public static function createUserLisener(){
-		if(OC_USER::isLoggedIn()){
-			if(OC_USER::ingroup($_SESSION['username'],'admin')){
-				if(isset($_POST['new_username']) and isset($_POST['new_password'])){
-					if(OC_USER::createuser($_POST['new_username'],$_POST['new_password'])){
+		global $userManager;
+
+		if ( $userManager::isLoggedIn() ) {
+			if ( $userManager::ingroup($_SESSION['username'], 'admin') ) {
+				if ( isset($_POST['new_username']) AND isset($_POST['new_password']) ) {
+					if ( $userManager::createUser($_POST['new_username'], $_POST['new_password']) ) {
 						return 'user successfully created';
-					}else{
+					} else {
 						return 'error while trying to create user';
 					}
 				}else{
 					return false;
 				}
-			}else{
+			} else {
 				return false;
 			}
 		}
 	}
 	
-	public static function createGroupLisener(){
-		if(OC_USER::isLoggedIn()){
-			if(isset($_POST['creategroup']) and $_POST['creategroup']==1){
-				if(OC_USER::creategroup($_POST['groupname'])){
-					if(OC_USER::addtogroup($_SESSION['username'],$_POST['groupname'])){
+	public static function createGroupLisener() {
+		global $userManager;
+
+		if ( $userManager::isLoggedIn() ) {
+			if ( isset($_POST['creategroup']) AND 1==$_POST['creategroup'] ) {
+				if ( $userManager::createGroup($_POST['groupname']) ) {
+					if ( $userManager::addTogroup($_SESSION['username'], $_POST['groupname']) ) {
 						return 'group successfully created';
-					}else{
+					} else {
 						return 'error while trying to add user to the new created group';
 					}
-				}else{
+				} else {
 					return 'error while trying to create group';
 				}
-			}else{
+			} else {
 				return false;
 			}
-		}else{
+		} else {
 			return false;
 		}
 	}
@@ -83,11 +93,13 @@ class OC_CONFIG{
    * lisen for configuration changes
    *
    */
-	public static function configLisener(){
-		if(OC_USER::isLoggedIn()){
+	public static function configLisener() {
+		global $userManager;
+
+		if($userManager::isLoggedIn()){
 			if(isset($_POST['config']) and $_POST['config']==1){
 				$error='';
-				if(!OC_USER::checkpassword($_SESSION['username'],$_POST['currentpassword'])){
+				if(!$userManager::checkpassword($_SESSION['username'],$_POST['currentpassword'])){
 					$error.='wrong password<br />';
 				}else{
 					if(isset($_POST['changepass']) and $_POST['changepass']==1){
@@ -95,7 +107,7 @@ class OC_CONFIG{
 						if(!isset($_POST['password2'])    or empty($_POST['password2']))    $error.='retype password not set<br />';
 						if($_POST['password']<>$_POST['password2'] )                        $error.='passwords are not the same<br />';
 						if(empty($error)){
-							if(!OC_USER::setpassword($_SESSION['username'],$_POST['password'])){
+							if(!$userManager::setpassword($_SESSION['username'],$_POST['password'])){
 								$error.='error while trying to set password<br />';
 							}
 						}
@@ -143,11 +155,13 @@ class OC_CONFIG{
 	*/
 	public static function writeAdminLisener(){
 		global $CONFIG_INSTALLED;
+		global $userManager;
+
 		$allow=false;
 		if(!$CONFIG_INSTALLED){
 			$allow=true;
-		}elseif(OC_USER::isLoggedIn()){
-			if(OC_USER::ingroup($_SESSION['username'],'admin')){
+		}elseif($userManager::isLoggedIn()){
+			if($userManager::ingroup($_SESSION['username'],'admin')){
 				$allow=true;
 			}
 		}
@@ -170,7 +184,7 @@ class OC_CONFIG{
 				$error='';
 				$FIRSTRUN=!$CONFIG_INSTALLED;
 				if(!$FIRSTRUN){
-					if(!OC_USER::login($_SESSION['username'],$_POST['currentpassword'])){
+					if(!$userManager::login($_SESSION['username'],$_POST['currentpassword'])){
 					$error.='wrong password<br />';
 					}
 				}
@@ -248,15 +262,15 @@ class OC_CONFIG{
 						}
 					}
 					if($FIRSTRUN){
-						if(!OC_USER::createuser($_POST['adminlogin'],$_POST['adminpassword']) && !OC_USER::login($_POST['adminlogin'],$_POST['adminpassword'])){
+						if(!$userManager::createuser($_POST['adminlogin'],$_POST['adminpassword']) && !$userManager::login($_POST['adminlogin'],$_POST['adminpassword'])){
 							$error.='error while trying to create the admin user<br/>';
 						}
-						if(OC_USER::getgroupid('admin')==0){
-							if(!OC_USER::creategroup('admin')){
+						if($userManager::getgroupid('admin')==0){
+							if(!$userManager::creategroup('admin')){
 								$error.='error while trying to create the admin group<br/>';
 							}
 						}
-						if(!OC_USER::addtogroup($_POST['adminlogin'],'admin')){
+						if(!$userManager::addtogroup($_POST['adminlogin'],'admin')){
 							$error.='error while trying to add the admin user to the admin group<br/>';
 						}
 					}
@@ -365,6 +379,3 @@ class OC_CONFIG{
 		}
 	}
 }
-?>
-
-
diff --git a/inc/lib_user.php b/inc/lib_user.php
index 09ab1a3ddb..394377984c 100755
--- a/inc/lib_user.php
+++ b/inc/lib_user.php
@@ -43,158 +43,92 @@ if ( !isset($_SESSION['group_id_cache']) ) {
  * Class for user management
  *
  */
-class OC_USER {
-
-	public static $classType;
+abstract class OC_USER_ABSTRACT {
 
 	/**
 	 * Check if the login button is pressed and logg the user in
 	 *
 	 */
-	public static function loginLisener() {
-		return self::$classType->loginLisener();
-	}
+	abstract public static function loginLisener();
 
 	/**
 	 * Try to create a new user
 	 *
 	 */
-	public static function createUser($username, $password) {
-		return self::$classType->createUser($username, $password);
-	}
+	abstract public static function createUser($username, $password);
 
 	/**
 	 * Try to login a user
 	 *
 	 */
-	public static function login($username, $password) {
-		return self::$classType->login($username, $password);
-	}
+	abstract public static function login($username, $password);
 
 	/**
 	 * Check if the logout button is pressed and logout the user
 	 *
 	 */
-	public static function logoutLisener() {
-		return self::$classType->logoutLisener();
-	}
+	abstract public static function logoutLisener();
 
 	/**
 	 * Check if a user is logged in
 	 *
 	 */
-	public static function isLoggedIn() {
-		return self::$classType->isLoggedIn();
-	}
+	abstract public static function isLoggedIn();
 
 	/**
 	 * Try to create a new group
 	 *
 	 */
-	public static function createGroup($groupName) {
-		return self::$classType->createGroup($groupName);
-	}
+	abstract public static function createGroup($groupName);
 
 	/**
 	 * Get the ID of a user
 	 *
 	 */
-	public static function getUserId($username, $noCache=false) {
-		return self::$classType->getUserId($username, $noCache);
-	}
+	abstract public static function getUserId($username, $noCache=false);
 
 	/**
 	 * Get the ID of a group
 	 *
 	 */
-	public static function getGroupId($groupName, $noCache=false) {
-		return self::$classType->getGroupId($groupName, $noCache);
-	}
+	abstract public static function getGroupId($groupName, $noCache=false);
 
 	/**
 	 * Get the name of a group
 	 *
 	 */
-	public static function getGroupName($groupId, $noCache=false) {
-		return self::$classType->getGroupName($groupId, $noCache);
-	}
+	abstract public static function getGroupName($groupId, $noCache=false);
 
 	/**
 	 * Check if a user belongs to a group
 	 *
 	 */
-	public static function inGroup($username, $groupName) {
-		return self::$classType->inGroup($username, $groupName);
-	}
+	abstract public static function inGroup($username, $groupName);
 
 	/**
 	 * Add a user to a group
 	 *
 	 */
-	public static function addToGroup($username, $groupName) {
-		return self::$classType->addToGroup($username, $groupName);
-	}
+	abstract public static function addToGroup($username, $groupName);
 
-	public static function generatePassword() {
-		return uniqId();
-	}
+	abstract public static function generatePassword();
 
 	/**
 	 * Get all groups the user belongs to
 	 *
 	 */
-	public static function getUserGroups($username) {
-		return self::$classType->getUserGroups($username);
-	}
+	abstract public static function getUserGroups($username);
 
 	/**
 	 * Set the password of a user
 	 *
 	 */
-	public static function setPassword($username, $password) {
-		return self::$classType->setPassword($username, $password);
-	}
+	abstract public static function setPassword($username, $password);
 
 	/**
 	 * Check the password of a user
 	 *
 	 */
-	public static function checkPassword($username, $password) {
-		return self::$classType->checkPassword($username, $password);
-	}
-
-}
-
-
+	abstract public static function checkPassword($username, $password);
 
-/**
- * Funtion to set the User Authentication Module
- */
-function set_OC_USER() {
-	global $CONFIG_BACKEND;
-
-	if ( isset($CONFIG_BACKEND) ) {
-		switch ( $CONFIG_BACKEND ) {
-			case 'mysql':
-			case 'sqlite':
-				require_once 'User/database.php';
-				OC_USER::$classType = new OC_USER_Database();
-				break;
-			case 'ldap':
-				require_once 'User/ldap.php';
-				OC_USER::$classType = new OC_USER_LDAP();
-				break;
-			default:
-				require_once 'User/database.php';
-				OC_USER::$classType = new OC_USER_Database();
-				break;
-		}
-	} else {
-		require_once 'User/database.php';
-		OC_USER::$classType = new OC_USER_Database();
-	}
 }
-
-
-
-set_OC_USER();
-- 
GitLab