assign('index_error', 1); if ($errorno == 1) { $smarty->assign('index_error_text', "Es müssen alle Felder ausgefüllt werden"); } if ($errorno == 3) { $smarty->assign('index_error_text', "Der Benutzername oder das Passwort ist nicht korrekt
Stellen Sie sicher, dass Ihr Benutzerkonto in der Hochschule aktiv ist."); } if ($errorno == 4) { $smarty->assign('index_error_text', "Der Benutzer ist nicht für das System freigegeben!
Bitte wenden Sie sich an den Administrator ($global_service_admin)"); } if ($errorno == 5) { $smarty->assign('index_error_text', "Der Benutzer ist im System nicht vorhanden!
Bitte wenden Sie sich an den Administrator."); } # Daten aufbereiten bei Fehler if (isset($_SESSION["global_username"])) { $smarty->assign('index_user', $_SESSION["global_username"]); } } } if ($action == 'anmeld') { // Variablen setzen, damit sie nicht mit ISSET geprüft werden müssen. Standardeinstellungen sind so, dass kein Login möglich wäre $anzahl = 0; $anzahl_db = 0; $login = 1; $login_db = 1; $username = strtolower($_POST["user"]); //remove case sensitivity on the username # AcitveDirectory oder OPEN LDAP if($global_ldap_art == 1){ $password=utf8_decode($_POST["password"]); } if($global_ldap_art == 2){ $password=$_POST["password"]; } if ($_POST["user"] != "") { $_SESSION["global_username"] = $username; } if ($username == "" OR $password == "") { echo ""; } else { $db = dbconnect(); $query_server = $db->query("SELECT wert1 ip, wert2 port FROM dep_parameter WHERE pid='3'"); $row_server = $query_server->fetch_array(); /* ################################ ## Prüfe studnet ob Treffer ################################ # bind wird benötigt, sonst werden die Umlaute bei Namen nicht richtig angezeigt ?!!? $ds=@ldap_connect("141.10.144.37", "389"); ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); $r=@ldap_bind($ds, $row_ldapuser['wert1'], $row_ldapuser['wert2']); $_ldap_dn = "ou=ouStudnet,dc=studnet,dc=hs-ludwigsburg,dc=de"; $sr=@ldap_search($ds, $_ldap_dn, "samaccountname=$username"); $info = @ldap_get_entries($ds, $sr); $anzahl = ldap_count_entries($ds,$sr); $vorname = $info[0]['givenname'][0]; $nachname = $info[0]['sn'][0]; $mail = $info[0]['mail'][0]; $first = ldap_first_entry($ds,$sr); $distinguishedName = ldap_get_dn($ds,$first); $result_jg = $db->query("SELECT ag, jahrgang FROM kurs.stud WHERE lower(uid)='$username'"); $row_jg = $result_jg->fetch_array(); ################################ ### Wenn binden fehlschlägt, also Passwort falsch ##!!!!! IM STUDNET MIT DEM USERNAMEN BINDEN, IM HSNET MIT DEM DISTINGUISHEDNAME !!!!!!################# #if ($bind = @ldap_bind($ds, $username, $password) AND $anzahl > 0){ if ($bind = ldap_bind($ds, $distinguishedName, $password) AND $anzahl > 0){ # Bind funktioniert #echo "studnet: Bind funktioniert: $anzahl
"; $login = "0"; $login_ad = "studnet"; }else{ # Bind funktioniert nicht #echo "studnet: Bind funktioniert nicht: $anzahl
"; $login = "1"; ldap_close($ds); } #exit; ######## # INFO hsnet: Würde man nur $_ldap_dn = "dc=hsnet,dc=hs-ludwigsburg,dc=de"; angeben ohne OU=OUHochschunetzwerk oä., würde php beim search nichts mehr finden und alle Passwörter akzeptieren ######## */ ################################ ## Prüfe OUHochschulnetzwerk ob Treffer, wenn studnet nicht funktioniert ################################ // if($login == "1" and $anzahl == "0"){ $ds = @ldap_connect($global_ldap_serverhsnet, $global_ldap_porthsnet); if ($ds) { # bind wird benötigt, sonst werden die Umlaute bei Namen nicht richtig angezeigt ?!!? $r = @ldap_bind($ds, $global_ldap_user, $global_ldap_pwd); $_ldap_dn = "ou=OUHochschulnetzwerk,dc=hsnet,dc=hs-ludwigsburg,dc=de"; $sr = @ldap_search($ds, $_ldap_dn, "samaccountname=$username"); $info = @ldap_get_entries($ds, $sr); $anzahl = ldap_count_entries($ds, $sr); $vorname = $info[0]['givenname'][0]; $nachname = $info[0]['sn'][0]; $mail = $info[0]['mail'][0]; $first = ldap_first_entry($ds, $sr); $distinguishedName = @ldap_get_dn($ds, $first); ################################ # Bind geht im hsnet nur über den DN "CN=Schwarz\, Alexander, OU=Externe Benutzer, ou=OUHochschulnetzwerk,dc=hsnet,dc=hs-ludwigsburg,dc=de" ##!!!!! IM STUDNET MIT DEM USERNAMEN BINDEN, IM HSNET MIT DEM DISTINGUISHEDNAME !!!!!!################# if ($bind = @ldap_bind($ds, $distinguishedName, $password) AND $anzahl > 0) { #echo "hsnet: Bind funktioniert: $anzahl |$distinguishedName|
"; $login = "0"; $login_ad = "hsnet"; } else { # Bind funktioniert nicht $login = "1"; ldap_close($ds); #echo "hsnet: Bind funktioniert nicht: $anzahl
"; } } // } ################################ ## Prüfe OURechenzentrum ob Treffer, wenn OUHochschulnetzwerk nicht funktioniert ################################ if ($login == "1" and $anzahl == 0) { $ds = @ldap_connect($global_ldap_serverhsnet, $global_ldap_porthsnet); if ($ds) { # bind wird benötigt, sonst werden die Umlaute bei Namen nicht richtig angezeigt ?!!? $r = @ldap_bind($ds, $global_ldap_user, $global_ldap_pwd); $_ldap_dn = "ou=OURechenzentrum,dc=hsnet,dc=hs-ludwigsburg,dc=de"; $sr = @ldap_search($ds, $_ldap_dn, "samaccountname=$username"); $info = @ldap_get_entries($ds, $sr); $anzahl = ldap_count_entries($ds, $sr); $vorname = $info[0]['givenname'][0]; $nachname = $info[0]['sn'][0]; $mail = $info[0]['mail'][0]; $first = ldap_first_entry($ds, $sr); $distinguishedName = @ldap_get_dn($ds, $first); ################################ # Bind geht im hsnet nur über den DN "CN=Schwarz\, Alexander, OU=Externe Benutzer, ou=OUHochschulnetzwerk,dc=hsnet,dc=hs-ludwigsburg,dc=de" ##!!!!! IM STUDNET MIT DEM USERNAMEN BINDEN, IM HSNET MIT DEM DISTINGUISHEDNAME !!!!!!################# if ($bind = @ldap_bind($ds, $distinguishedName, $password) AND $anzahl > 0) { #echo "RZ: Bind funktioniert: $anzahl
"; $login = "0"; $login_ad = "hsnet"; } else { # Bind funktioniert nicht #echo "RZ: Bind funktioniert nicht: $anzahl
"; $login = "1"; ldap_close($ds); } } } /* echo "
distinguishedName = $distinguishedName
anzahl_hs $anzahl
Username $username, $vorname, $nachname, $mail
account: $username, $password
login $login
exit; */ $db = dbconnect(); $result = $db->query("SELECT imtuid, uid, passwort FROM dep_user WHERE lower(uid)='$username'"); $row = $result->fetch_array(); $resultanz = $db->query("SELECT count(*) Anz FROM dep_user WHERE lower(uid)='$username'"); $rowanz = $resultanz->fetch_array(); $anzahl_db = $rowanz['Anz']; # Login geht nicht über LDAP, aber vielleicht über DB if ($login == "1" and $anzahl == 0) { if ($anzahl_db > 0) { # Userkennung gibt es if (md5($password) == $row['passwort']) { # Passwort richtig $login_db = "0"; } else { # Passwort falsch $login_db = "1"; } } else { # Userkennung gibt es nicht $login_db = "1"; $anzahl_db = 0; } } /* Loginmatrix mit Reihenfolge Sort LDAP vorhanden Datenbank vorhanden PW LDAP richtig PW DB richtig Aktivität 6 Nein Ja obs Nein Fehlermeldung PW falsch anzahl==0 anzahl_db>0 login == 1 login_db == 1 2 Nein Ja obs Ja Login anzahl==0 anzahl_db>0 login == 1 login_db == 0 4 Nein Nein obs obs Registrierung anzahl==0 anzahl_db==0 login == 1 - 5 Ja obs Nein obs Fehlermeldung PW falsch anzahl > 0 - login == 1 - 3 Ja Nein Ja obs Registrierung anzahl > 0 anzahl_db==0 login == 0 - 1 Ja Ja Ja obs Login anzahl > 0 anzahl_db>0 login == 0 - */ # Sort 1 if ($anzahl > 0 AND $anzahl_db > 0 AND $login == 0) { # Login über LDAP erfolgreich und Person in DB --> Login $db = dbconnect(); $datum = date("Y-m-d H:i:s"); $ip = getenv("REMOTE_ADDR"); $agent = getenv("HTTP_USER_AGENT"); $user_admin = $row['imtuid']; $_SESSION["global_uid"] = $user_admin; $_SESSION["global_username"] = $row['uid']; $result_1 = $db->query("INSERT INTO dep_userlog (Datum, IP, user_agent, imtuid) VALUES ('$datum', '$ip', '$agent', '$user_admin')"); $sql = $db->query("UPDATE dep_user SET mail_inaktiv='0000-00-00 00:00:00' ,vorname = '$vorname' ,nachname = '$nachname' ,mail = '$mail' WHERE imtuid='$user_admin'"); echo ""; exit; } # Sort 2 if ($anzahl == 0 AND $anzahl_db > 0 AND $login == 1 AND $login_db == 0) { # Person in LDAP nicht vorhanden aber Login über Datenbank erfolgreich --> Login $user_admin = $row['imtuid']; $_SESSION["global_uid"] = $user_admin; $_SESSION["global_username"] = $row['uid']; $result_1 = $db->query("INSERT INTO dep_userlog (Datum, IP, user_agent, imtuid) VALUES ('$datum', '$ip', '$agent', '$user_admin')"); echo ""; exit; } # Sort 3 if ($anzahl > 0 AND $anzahl_db == 0 AND $login == 0) { # Login über LDAP erfolgreich aber Person nicht in DB --> Registrierung ohne Bestätigungsmail // Frage ist, ob man eine Bestätigungsmail erhält, oder ob der Admin freigibt, welcher Doz zugelassen ist. Geht nur, wenn alle im LDAP sind bzw. wenn Admin Doz manuell anlegt echo ""; exit; } # Sort 4 if ($anzahl == 0 AND $anzahl_db == 0 AND $login == 1) { # Person in LDAP und DB nicht vorhanden --> Registrierung über Admin // Frage ist, ob man eine Bestätigungsmail erhält, oder ob der Admin freigibt, welcher Doz zugelassen ist. Geht nur, wenn alle im LDAP sind bzw. wenn Admin Doz manuell anlegt echo ""; exit; } # Sort 5 if ($anzahl > 0 AND $login == 1) { # Person in LDAP vorhanden aber Passwort falsch --> Fehlermeldung PW LDAP falsch echo ""; exit; } # Sort 6 if ($anzahl == 0 AND $anzahl_db > 0 AND $login == 1 AND $login_db == 1) { # Person in LDAP nicht vorhanden aber in DB, dort aber Passwort falsch --> Fehlermeldung PW DB falsch echo ""; exit; } mysqli_close($db); } //if ($username == "" OR $password == "") { } $smarty->assign('action', "$action"); $smarty->display("$template/$templatename"); ?>