]> source.dussan.org Git - nextcloud-server.git/commitdiff
Moved LDAP authentication into a plugin
authorAldo "xoen" Giambelluca <xoen@xoen.org>
Thu, 22 Jul 2010 22:48:45 +0000 (00:48 +0200)
committerAldo "xoen" Giambelluca <xoen@xoen.org>
Thu, 22 Jul 2010 22:48:45 +0000 (00:48 +0200)
Used the current plugin system to define `USER_OC_LDAP` class
that can be used as backend for OC_USER

inc/User/ldap.php [deleted file]
inc/User/mod_auth.php [deleted file]
inc/lib_base.php
inc/lib_user.php
plugins/ldap/lib_ldap.php [new file with mode: 0755]

diff --git a/inc/User/ldap.php b/inc/User/ldap.php
deleted file mode 100755 (executable)
index c91f900..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-/**
-* ownCloud
-*
-* @author Frank Karlitschek 
-* @copyright 2010 Frank Karlitschek karlitschek@kde.org 
-* 
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
-* License as published by the Free Software Foundation; either 
-* version 3 of the License, or any later version.
-* 
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
-*  
-* You should have received a copy of the GNU Lesser General Public 
-* License along with this library.  If not, see <http://www.gnu.org/licenses/>.
-* 
-*/
-
-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 (executable)
index a037d8a..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-<?php
-
-/**
-* ownCloud
-*
-* @author Frank Karlitschek 
-* @copyright 2010 Frank Karlitschek karlitschek@kde.org 
-* 
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
-* License as published by the Free Software Foundation; either 
-* version 3 of the License, or any later version.
-* 
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
-*  
-* You should have received a copy of the GNU Lesser General Public 
-* License along with this library.  If not, see <http://www.gnu.org/licenses/>.
-* 
-*/
-
-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;
-       }
-
-}
index df6df15cc234839cff9b014dc1eca2c969633513..d0b25834421a227f88d22b238dad53acffd3e88d 100755 (executable)
@@ -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');
+                       }
+               }
+       }
+
 }
 
 
index 0f7c01b38183c7d05e2199ad56d02064ae697f58..1d0cb86c6a79dd4b65b5b12cb6bde9bd801ebc6a 100755 (executable)
@@ -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 (executable)
index 0000000..2105ed2
--- /dev/null
@@ -0,0 +1,202 @@
+<?php
+
+/**
+* ownCloud
+*
+* @author Frank Karlitschek 
+* @copyright 2010 Frank Karlitschek karlitschek@kde.org 
+* 
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+* License as published by the Free Software Foundation; either 
+* version 3 of the License, or any later version.
+* 
+* This library is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+*  
+* You should have received a copy of the GNU Lesser General Public 
+* License along with this library.  If not, see <http://www.gnu.org/licenses/>.
+* 
+*/
+
+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;
+       }
+
+}