From: Aldo "xoen" Giambelluca Date: Thu, 22 Jul 2010 22:48:45 +0000 (+0200) Subject: Moved LDAP authentication into a plugin X-Git-Tag: v3.0~332^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=11664f3153c86cefc2c366156234f9530777aab3;p=nextcloud-server.git Moved LDAP authentication into a plugin Used the current plugin system to define `USER_OC_LDAP` class that can be used as backend for OC_USER --- diff --git a/inc/User/ldap.php b/inc/User/ldap.php deleted file mode 100755 index c91f900342e..00000000000 --- a/inc/User/ldap.php +++ /dev/null @@ -1,29 +0,0 @@ -. -* -*/ - -oc_require_once('inc/User/mod_auth.php'); - - - -class OC_USER_LDAP extends OC_USER_MOD_AUTH { -} diff --git a/inc/User/mod_auth.php b/inc/User/mod_auth.php deleted file mode 100755 index a037d8abf2c..00000000000 --- a/inc/User/mod_auth.php +++ /dev/null @@ -1,202 +0,0 @@ -. -* -*/ - -oc_require_once('inc/User/backend.php'); - - - -/** - * Class for user management - * - */ -class OC_USER_MOD_AUTH extends OC_USER_BACKEND { - - /** - * Check if the login button is pressed and log the user in - * - */ - public static function loginLisener() { - return(''); - } - - /** - * Try to create a new user - * - * @param string $username The username of the user to create - * @param string $password The password of the new user - */ - public static function createUser($username, $password) { - return false; - } - - /** - * Try to login a user - * - * @param string $username The username of the user to log in - * @param string $password The password of the user - */ - public static function login($username, $password) { - if ( isset($_SERVER['PHP_AUTH_USER']) AND ('' != $_SERVER['PHP_AUTH_USER']) ) { - $_SESSION['user_id'] = $_SERVER['PHP_AUTH_USER']; - $_SESSION['username'] = $_SERVER['PHP_AUTH_USER']; - $_SESSION['username_clean'] = $_SERVER['PHP_AUTH_USER']; - return true; - } - return false; - } - - /** - * Check if the logout button is pressed and logout the user - * - */ - public static function logoutLisener() { - if ( isset($_GET['logoutbutton']) AND isset($_SESSION['username']) ) { - header('WWW-Authenticate: Basic realm="ownCloud"'); - header('HTTP/1.0 401 Unauthorized'); - die('401 Unauthorized'); - } - } - - /** - * Check if the user is logged in - * - */ - public static function isLoggedIn(){ - if ( isset($_SESSION['user_id']) AND $_SESSION['user_id'] ) { - return true; - } else { - if ( isset($_SERVER['PHP_AUTH_USER']) AND ('' != $_SERVER["PHP_AUTH_USER"]) ) { - $_SESSION['user_id'] = $_SERVER['PHP_AUTH_USER']; - $_SESSION['username'] = $_SERVER['PHP_AUTH_USER']; - $_SESSION['username_clean'] = $_SERVER['PHP_AUTH_USER']; - return true; - } - } - return false; - } - - /** - * Try to create a new group - * - * @param string $groupName The name of the group to create - */ - public static function createGroup($groupName) { - // does not work with MOD_AUTH (only or some modules) - return false; - } - - /** - * Get the ID of a user - * - * @param string $username Name of the user to find the ID - * @param boolean $noCache If false the cache is used to find the ID - */ - public static function getUserId($username, $noCache=false) { - // does not work with MOD_AUTH (only or some modules) - return 0; - } - - /** - * Get the ID of a group - * - * @param string $groupName Name of the group to find the ID - * @param boolean $noCache If false the cache is used to find the ID - */ - public static function getGroupId($groupName, $noCache=false) { - // does not work with MOD_AUTH (only or some modules) - return 0; - } - - /** - * Get the name of a group - * - * @param string $groupId ID of the group - * @param boolean $noCache If false the cache is used to find the name of the group - */ - public static function getGroupName($groupId, $noCache=false) { - // does not work with MOD_AUTH (only or some modules) - return 0; - } - - /** - * Check if a user belongs to a group - * - * @param string $username Name of the user to check - * @param string $groupName Name of the group - */ - public static function inGroup($username, $groupName) { - // does not work with MOD_AUTH (only or some modules) - return false; - } - - /** - * Add a user to a group - * - * @param string $username Name of the user to add to group - * @param string $groupName Name of the group in which add the user - */ - public static function addToGroup($username, $groupName) { - // does not work with MOD_AUTH (only or some modules) - return false; - } - - /** - * Generate a random password - */ - public static function generatePassword() { - return uniqId(); - } - - /** - * Get all groups the user belongs to - * - * @param string $username Name of the user - */ - public static function getUserGroups($username) { - // does not work with MOD_AUTH (only or some modules) - $groups=array(); - return $groups; - } - - /** - * Set the password of a user - * - * @param string $username User who password will be changed - * @param string $password The new password for the user - */ - public static function setPassword($username, $password) { - return false; - } - - /** - * Check if the password of the user is correct - * - * @param string $username Name of the user - * @param string $password Password of the user - */ - public static function checkPassword($username, $password) { - // does not work with MOD_AUTH (only or some modules) - return false; - } - -} diff --git a/inc/lib_base.php b/inc/lib_base.php index df6df15cc23..d0b25834421 100755 --- a/inc/lib_base.php +++ b/inc/lib_base.php @@ -110,21 +110,6 @@ if(OC_USER::isLoggedIn()){ OC_FILESYSTEM::mount($rootStorage,'/'); } -// load plugins -$CONFIG_LOADPLUGINS='all'; -if ($CONFIG_LOADPLUGINS != 'all') - $plugins=explode(' ',$CONFIG_LOADPLUGINS); -else{ - $plugins=array(); - $fd=opendir($SERVERROOT.'/plugins'); - while (($filename = readdir($fd)) !== false) { - if($filename<>'.' and $filename<>'..' and substr($filename,0,1)!='.'){ - $plugins[]=$filename; - } - } - closedir($fd); -} -if(isset($plugins[0])) foreach($plugins as $plugin) require_once($SERVERROOT.'/plugins/'.$plugin.'/lib_'.$plugin.'.php'); // check if the server is correctly configured for ownCloud @@ -305,6 +290,33 @@ class OC_UTIL { } } + /** + * Load the plugins + */ + public static function loadPlugins() { + global $CONFIG_LOADPLUGINS; + global $SERVERROOT; + + $CONFIG_LOADPLUGINS = 'all'; + if ( 'all' !== $CONFIG_LOADPLUGINS ) { + $plugins = explode(' ', $CONFIG_LOADPLUGINS); + } else { + $plugins = array(); + $fd = opendir($SERVERROOT . '/plugins'); + while ( false !== ($filename = readdir($fd)) ) { + if ( $filename<>'.' AND $filename<>'..' AND ('.' != substr($filename, 0, 1)) ) { + $plugins[] = $filename; + } + } + closedir($fd); + } + if ( isset($plugins[0]) ) { + foreach ( $plugins as $plugin ) { + oc_require_once('/plugins/' . $plugin . '/lib_' . $plugin . '.php'); + } + } + } + } diff --git a/inc/lib_user.php b/inc/lib_user.php index 0f7c01b3818..1d0cb86c6a7 100755 --- a/inc/lib_user.php +++ b/inc/lib_user.php @@ -23,6 +23,8 @@ global $CONFIG_BACKEND; +OC_UTIL::loadPlugins(); + if ( !$CONFIG_INSTALLED ) { @@ -63,18 +65,15 @@ class OC_USER { } switch ( $backend ) { + case 'database': case 'mysql': case 'sqlite': oc_require_once('inc/User/database.php'); self::$_backend = new OC_USER_DATABASE(); break; - case 'ldap': - oc_require_once('inc/User/ldap.php'); - self::$_backend = new OC_USER_LDAP(); - break; default: - oc_require_once('inc/User/database.php'); - self::$_backend = new OC_USER_DATABASE(); + $className = 'OC_USER_' . strToUpper($backend); + self::$_backend = new $className(); break; } } diff --git a/plugins/ldap/lib_ldap.php b/plugins/ldap/lib_ldap.php new file mode 100755 index 00000000000..2105ed2464e --- /dev/null +++ b/plugins/ldap/lib_ldap.php @@ -0,0 +1,202 @@ +. +* +*/ + +oc_require_once('inc/User/backend.php'); + + + +/** + * Class for user management + * + */ +class OC_USER_LDAP extends OC_USER_BACKEND { + + /** + * Check if the login button is pressed and log the user in + * + */ + public static function loginLisener() { + return(''); + } + + /** + * Try to create a new user + * + * @param string $username The username of the user to create + * @param string $password The password of the new user + */ + public static function createUser($username, $password) { + return false; + } + + /** + * Try to login a user + * + * @param string $username The username of the user to log in + * @param string $password The password of the user + */ + public static function login($username, $password) { + if ( isset($_SERVER['PHP_AUTH_USER']) AND ('' != $_SERVER['PHP_AUTH_USER']) ) { + $_SESSION['user_id'] = $_SERVER['PHP_AUTH_USER']; + $_SESSION['username'] = $_SERVER['PHP_AUTH_USER']; + $_SESSION['username_clean'] = $_SERVER['PHP_AUTH_USER']; + return true; + } + return false; + } + + /** + * Check if the logout button is pressed and logout the user + * + */ + public static function logoutLisener() { + if ( isset($_GET['logoutbutton']) AND isset($_SESSION['username']) ) { + header('WWW-Authenticate: Basic realm="ownCloud"'); + header('HTTP/1.0 401 Unauthorized'); + die('401 Unauthorized'); + } + } + + /** + * Check if the user is logged in + * + */ + public static function isLoggedIn(){ + if ( isset($_SESSION['user_id']) AND $_SESSION['user_id'] ) { + return true; + } else { + if ( isset($_SERVER['PHP_AUTH_USER']) AND ('' != $_SERVER["PHP_AUTH_USER"]) ) { + $_SESSION['user_id'] = $_SERVER['PHP_AUTH_USER']; + $_SESSION['username'] = $_SERVER['PHP_AUTH_USER']; + $_SESSION['username_clean'] = $_SERVER['PHP_AUTH_USER']; + return true; + } + } + return false; + } + + /** + * Try to create a new group + * + * @param string $groupName The name of the group to create + */ + public static function createGroup($groupName) { + // does not work with MOD_AUTH (only or some modules) + return false; + } + + /** + * Get the ID of a user + * + * @param string $username Name of the user to find the ID + * @param boolean $noCache If false the cache is used to find the ID + */ + public static function getUserId($username, $noCache=false) { + // does not work with MOD_AUTH (only or some modules) + return 0; + } + + /** + * Get the ID of a group + * + * @param string $groupName Name of the group to find the ID + * @param boolean $noCache If false the cache is used to find the ID + */ + public static function getGroupId($groupName, $noCache=false) { + // does not work with MOD_AUTH (only or some modules) + return 0; + } + + /** + * Get the name of a group + * + * @param string $groupId ID of the group + * @param boolean $noCache If false the cache is used to find the name of the group + */ + public static function getGroupName($groupId, $noCache=false) { + // does not work with MOD_AUTH (only or some modules) + return 0; + } + + /** + * Check if a user belongs to a group + * + * @param string $username Name of the user to check + * @param string $groupName Name of the group + */ + public static function inGroup($username, $groupName) { + // does not work with MOD_AUTH (only or some modules) + return false; + } + + /** + * Add a user to a group + * + * @param string $username Name of the user to add to group + * @param string $groupName Name of the group in which add the user + */ + public static function addToGroup($username, $groupName) { + // does not work with MOD_AUTH (only or some modules) + return false; + } + + /** + * Generate a random password + */ + public static function generatePassword() { + return uniqId(); + } + + /** + * Get all groups the user belongs to + * + * @param string $username Name of the user + */ + public static function getUserGroups($username) { + // does not work with MOD_AUTH (only or some modules) + $groups=array(); + return $groups; + } + + /** + * Set the password of a user + * + * @param string $username User who password will be changed + * @param string $password The new password for the user + */ + public static function setPassword($username, $password) { + return false; + } + + /** + * Check if the password of the user is correct + * + * @param string $username Name of the user + * @param string $password Password of the user + */ + public static function checkPassword($username, $password) { + // does not work with MOD_AUTH (only or some modules) + return false; + } + +}