openrat-cms

# OpenRat Content Management System
git clone http://git.code.weiherhei.de/openrat-cms.git
Log | Files | Refs

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 ?>