aboutsummaryrefslogtreecommitdiff
path: root/login.php
diff options
context:
space:
mode:
Diffstat (limited to 'login.php')
-rw-r--r--login.php47
1 files changed, 47 insertions, 0 deletions
diff --git a/login.php b/login.php
new file mode 100644
index 0000000..a767266
--- /dev/null
+++ b/login.php
@@ -0,0 +1,47 @@
+
+<?php
+
+function try_login($username,$password) {
+ global $admins;
+ if (strlen($username) < 8 or strlen($username) > 100) {
+ return "failed";
+ }
+ if (strlen($password) < 8 or strlen($password) > 1000) {
+ return "failed";
+ }
+ $ldapserver = "ldap://ldap.hs-augsburg.de";
+ $ldapusertree = 'ou=People, dc=fh-augsburg, dc=de';
+
+ $ldapconn = ldap_connect($ldapserver)
+ or die ("Cannot connect to ldap server ".$ldapserver);
+ ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
+ ldap_set_option($ldapconn, LDAP_OPT_NETWORK_TIMEOUT, 3);
+
+ $ldapbind = ldap_bind($ldapconn,"uid=$username, ".$ldapusertree,$password);
+ if ($ldapbind) {
+ // Login was successfull
+ session_regenerate_id(TRUE);
+ $sr=ldap_search($ldapconn,$ldapusertree,"uid=$username",["sn","givenname"]);
+ $info = ldap_get_entries($ldapconn,$sr);
+ ldap_unbind($ldapconn);
+ $vorname = $info[0]["givenname"][0];
+ $nachname = $info[0]["sn"][0];
+ $matrikelnummer = db_find_user($vorname,$nachname);
+ if (in_array($username,$admins)) {
+ $_SESSION["login"] = "admin";
+ return "admin";
+ } elseif ($matrikelnummer) {
+ $_SESSION["login"] = "user";
+ $_SESSION["myusername"] = $username;
+ $_SESSION["mymatrikelnummer"] = $matrikelnummer;
+ return "user";
+ } else {
+ $_SESSION["login"] = "nodb";
+ return "nodb";
+ }
+ } else {
+ $_SESSION["login"] = "failed";
+ return "failed";
+ }
+}
+?> \ No newline at end of file