LdapAuth.class.php (1832B)
1 <?php 2 3 class LdapAuth implements Auth 4 { 5 6 public function login($username, $password, $token) 7 { 8 9 // Falls Modul LDAP nicht vorhanden ist können wir gleich beenden. 10 if (!extension_loaded('ldap')){ 11 12 Logger::warn("LdapAuth: LDAP Login is not possible: LDAP-Extension ist not loaded."); 13 return false; 14 } 15 16 global $conf; 17 $db = db_connection(); 18 $this->mustChangePassword = false; 19 20 // Lesen des Benutzers aus der DB-Tabelle 21 $sql = $db->sql( <<<SQL 22 SELECT * FROM {{user}} 23 WHERE name={name} 24 SQL 25 ); 26 $sql->setString('name',$username); 27 28 $row_user = $sql->getRow(); 29 $userid = $row_user['id']; 30 31 $ldap = new Ldap(); 32 $ldap->connect(); 33 34 if ( empty($conf['ldap']['dn']) ) 35 { 36 // Der Benutzername wird im LDAP-Verzeichnis gesucht. 37 // Falls gefunden, wird der DN (=der eindeutige Schl�ssel im Verzeichnis) ermittelt. 38 $dn = $ldap->searchUser( $username ); 39 40 if ( empty($dn) ) 41 { 42 Logger::debug( 'User not found in LDAP directory' ); 43 return false; // Kein LDAP-Account gefunden. 44 } 45 46 Logger::debug( 'User found: '.$dn ); 47 } 48 else 49 { 50 $dn = str_replace( '{user}',$username,$conf['ldap']['dn'] ); 51 } 52 53 // LDAP-Login versuchen 54 $ok = $ldap->bind( $dn, $password ); 55 56 Logger::debug( 'LDAP bind: '.($ok?'success':'failed') ); 57 58 if ( !$ok ) 59 return false; 60 61 $sucheAttribut = $conf['ldap']['authorize']['group_name']; 62 $sucheFilter = str_replace('{dn}',$dn,$conf['ldap']['authorize']['group_filter']); 63 64 $this->groups = $ldap->searchAttribute( $sucheFilter, $sucheAttribut ); 65 $user = new User( $userid ); 66 67 // Html::debug($this->groups,'Gruppen/Ids des Benutzers'); 68 69 // Verbindung zum LDAP-Server brav beenden 70 $ldap->close(); 71 72 return true; 73 } 74 75 public function username() 76 { 77 return null; 78 } 79 80 } 81 82 ?>