Project

General

Profile

« Previous | Next » 

Revision 1dfc6c56

Added by Scott Ullrich over 17 years ago

Changes to allow Novell eDir to authenticate via LDAP.

Thanks to Mark Batchelor for all of his help with these changes.

View differences:

etc/inc/auth.inc
755 755
	$ldapfilter = $config['system']['webgui']['ldapfilter'];
756 756
	$ldapsearchbase = "{$config['system']['webgui']['ldapsearchbase']}";
757 757
	$ldapfilter = str_replace("\$username", $username, $ldapfilter);
758
	
759 758
	$ldapauthcontainers = $config['system']['webgui']['ldapauthcontainers'];
760 759
	
761 760
	if (!($ldap = ldap_connect($ldapserver))) {
......
798 797
		return $status;	
799 798
	}
800 799

  
801
	$search = ldap_search($ldap, $ou . "," . $ldapsearchbase, $ldapfilter, array('memberOf'));
800
	$search = ldap_search($ldap, $ldapauthcontainers, $ldapfilter, array('groupmembership'));
801

  
802 802
	$info = ldap_get_entries($ldap, $search);
803
	
803
        $countem = $info["count"];	
804 804
	$memberof = array();
805 805
	
806
	if(is_array($info[0]['memberof'])) {
807
    	foreach($info[0]['memberof'] as $member) {
808
            	if(strstr($member, "CN=") !== false) {
806
        log_error("USER HAS {$countem} LDAP Groups it is {$info[0]['groupmembership'][0]}");
807

  
808
	if(is_array($info[0]['groupmembership'])) {
809
    	foreach($info[0]['groupmembership'] as $member) {
810
            	if(strstr($member, "cn=") !== false) {
809 811
                    	$membersplit = split(",", $member);
810
                    	$memberof[] = str_replace("CN=", "", $membersplit[0]);
812
                    	$memberof[] = str_replace("cn=", "", $membersplit[0]);
811 813
            	}
812 814
    	}
813 815
	}
......
834 836
	$ldapserver = $config['system']['webgui']['ldapserver'];
835 837
	$ldapbindun = $config['system']['webgui']['ldapbindun'];
836 838
	$ldapbindpw = $config['system']['webgui']['ldapbindpw'];
837

  
839
        $ldapauthcont = $config['system']['webgui']['ldapauthcontainers'];   
840
 
838 841
	if(!$ldapserver) {
839 842
		log_error("ERROR!  ldap_backed() backed selected with no LDAP authentication server defined.  Defaulting to built-in htpasswd_backed().     Visit System -> User Manager -> Settings.");
840 843
		$status = htpasswd_backed($username, $passwd);
......
846 849
		$status = htpasswd_backed($username, $passwd);
847 850
		return $status;	
848 851
	}
849
	
850
	if (!($res = @ldap_bind($ldap, $username, $passwd))) {
852
       /* HARD CODED - need to have a uid or something here */ 
853
	$binduser = 'cn='.$username.','.$ldapauthcont;
854
        log_error("BINDUSER ==== {$binduser}");
855
	if (!($res = @ldap_bind($ldap, $binduser, $passwd))) {
851 856
	    log_error("ERROR!  ldap_backed() could not bind to {$ldapserver} - {$username} - {$passwd}.  Defaulting to built-in htpasswd_backed().    Visit System -> User Manager -> Settings.");
852 857
		$status = htpasswd_backed($username, $passwd);
853 858
		return $status;
854 859
	}
855 860
	
856 861
	log_error("$username logged in via LDAP.");
857
	
862
	log_error("$binduser ldap name logged in via LDAP.");
858 863
	/* At this point we are binded to LDAP so the user was auth'd okay. */
859 864
	return true;
860 865
}

Also available in: Unified diff