7da094bcb55a7e03bb016cadfabbcbe13f54d6f0
bernd webinterface => /webinterface

bernd authored 17 years ago

1) <?php
2) 
bernd Logging aktiviert

bernd authored 16 years ago

3) require_once('inc/base.php');
bernd webinterface => /webinterface

bernd authored 17 years ago

4) require_once('inc/debug.php');
5) require_once('inc/error.php');
6) 
7) require_once('inc/db_connect.php');
8) 
9) define('ROLE_ANONYMOUS', 0);
10) define('ROLE_DOMAINADMIN', 1);
11) define('ROLE_SYSTEMUSER', 2);
bernd * Initialisierung der Sessi...

bernd authored 16 years ago

12) define('ROLE_CUSTOMER', 4);
13) define('ROLE_SYSADMIN', 8);
bernd webinterface => /webinterface

bernd authored 17 years ago

14) 
15) 
16) // Gibt die Rolle aus, wenn das Passwort stimmt
17) 
bernd * Initialisierung der Sessi...

bernd authored 16 years ago

18) function find_role($login, $password, $i_am_admin = False)
bernd webinterface => /webinterface

bernd authored 17 years ago

19) {
20)   $login = mysql_real_escape_string($login);
21)   // Domain-Admin?  <not implemented>
22)   // System-User?
23)   $uid = (int) $login;
24)   if ($uid == 0)
25)     $uid = 'NULL';
bernd * Initialisierung der Sessi...

bernd authored 16 years ago

26)   $result = db_query("SELECT passwort AS password, (u.uid = (SELECT min(uid) FROM system.v_useraccounts AS acc WHERE acc.kunde=u.kunde)) AS  `primary`, ((SELECT acc.uid FROM system.v_useraccounts AS acc LEFT JOIN system.gruppenzugehoerigkeit USING (uid) LEFT JOIN system.gruppen AS g ON (g.gid=gruppenzugehoerigkeit.gid) WHERE g.name='admin' AND acc.uid=u.uid) IS NOT NULL) AS admin FROM system.v_useraccounts AS u LEFT JOIN system.passwoerter USING(uid) WHERE u.uid={$uid} OR username='{$login}' LIMIT 1;");
bernd webinterface => /webinterface

bernd authored 17 years ago

27)   if (@mysql_num_rows($result) > 0)
28)   {
bernd * Initialisierung der Sessi...

bernd authored 16 years ago

29)     $entry = mysql_fetch_object($result);
30)     $db_password = $entry->password;
bernd webinterface => /webinterface

bernd authored 17 years ago

31)     $hash = crypt($password, $db_password);
bernd * Initialisierung der Sessi...

bernd authored 16 years ago

32)     if ($hash == $db_password || $i_am_admin)
33)     {
34)       $role = ROLE_SYSTEMUSER;
35)       if ($entry->primary)
36)         $role = $role | ROLE_CUSTOMER;
37)       if ($entry->admin)
38)         $role = $role | ROLE_SYSADMIN;
39)       return $role;
40)     }
bernd webinterface => /webinterface

bernd authored 17 years ago

41)   }
42) 
43)   // Customer?
44)   $customerno = (int) $login;
45)   $pass = sha1($password);
bernd sql-abfragen abstrahiert

bernd authored 16 years ago

46)   $result = db_query("SELECT passwort AS password FROM kundendaten.kunden WHERE status=0 AND id={$customerno} AND passwort='{$pass}';");
bernd * Initialisierung der Sessi...

bernd authored 16 years ago

47)   if ($i_am_admin)
48)     $result = db_query("SELECT passwort AS password FROM kundendaten.kunden WHERE status=0 AND id={$customerno}");
bernd webinterface => /webinterface

bernd authored 17 years ago

49)   if (@mysql_num_rows($result) > 0)
50)   {
51)     return ROLE_CUSTOMER;
52)   }
53) 
54)   // Nothing?
55)   return NULL;
56) }
57) 
58) 
bernd * Initialisierung der Sessi...

bernd authored 16 years ago

59) function get_customer_info($customer)
bernd webinterface => /webinterface

bernd authored 17 years ago

60) {
bernd * Initialisierung der Sessi...

bernd authored 16 years ago

61)   if (! $_SESSION['role'] & ROLE_CUSTOMER)
62)     return array();
bernd webinterface => /webinterface

bernd authored 17 years ago

63)   $ret = array();
bernd * Initialisierung der Sessi...

bernd authored 16 years ago

64)   $customerno = (int) $customer;
65)   if ($customerno != 0)
66)   {
67)     DEBUG('Looking up customerinfo for customer no. '.$customerno);
68)     $result = db_query("SELECT id, anrede, firma, CONCAT_WS(' ', vorname, nachname) AS name FROM kundendaten.kunden WHERE id={$customerno} LIMIT 1;");
69)   }
70)   else
71)   {
72)     $username = mysql_real_escape_string($customer);
73)     DEBUG('looking up customer info for username '.$username);
74)     $result = db_query("SELECT id, anrede, firma, CONCAT_WS(' ', vorname, nachname) AS name FROM kundendaten.kunden AS k JOIN system.v_useraccounts AS u ON (u.kunde=k.id) WHERE u.username='{$username}'");
75)   }
bernd webinterface => /webinterface

bernd authored 17 years ago

76)   if (@mysql_num_rows($result) == 0)
77)     system_failure("Konnte Kundendaten nicht auslesen!");
78)   $data = mysql_fetch_object($result);
79) 
80)   $ret['customerno'] = $data->id;
81)   $ret['title'] = $data->anrede;
82)   $ret['company'] = $data->firma;
83)   $ret['name'] = $data->name;
84)   
85)   return $ret;
86) }
87) 
88) 
89) function get_customer_email($customerno)
90) {
91)   $customerno = (int) $customerno;
bernd sql-abfragen abstrahiert

bernd authored 16 years ago

92)   $result = db_query("SELECT wert FROM kundendaten.kundenkontakt WHERE kundennr={$customerno} AND typ='email' LIMIT 1;");
bernd webinterface => /webinterface

bernd authored 17 years ago

93)   if (@mysql_num_rows($result) == 0)
94)     system_failure("Konnte keine E-Mail-Adresse finden!");
95)   return mysql_fetch_object($result)->wert;
96) }
97) 
98) 
99) 
100) function get_user_info($username)
101) {
102)   $username = mysql_real_escape_string($username);
bernd sql-abfragen abstrahiert

bernd authored 16 years ago

103)   $result = db_query("SELECT kunde AS customerno, username, uid, homedir, name
104)                       FROM system.v_useraccounts WHERE username='{$username}' OR uid='{$username}' LIMIT 1");
bernd webinterface => /webinterface

bernd authored 17 years ago

105)   if (mysql_num_rows($result) < 1)
bernd Kunden-Status wird benutzt...

bernd authored 16 years ago

106)   {
107)     logger("session/checkuser.php", "login", "error reading user's data: »{$username}«");
bernd webinterface => /webinterface

bernd authored 17 years ago

108)     system_failure('Das Auslesen Ihrer Benutzerdaten ist fehlgeschlagen. Bitte melden Sie dies einem Administrator');
bernd Kunden-Status wird benutzt...

bernd authored 16 years ago

109)   }
bernd webinterface => /webinterface

bernd authored 17 years ago

110)   $val = @mysql_fetch_object($result);
111)   return array(
112)           'username'      => $val->username,
113)           'customerno'    => $val->customerno,
114)           'uid'           => $val->uid,
115)           'homedir'       => $val->homedir,
116)           'name'          => $val->name,
117)           );
118) }
119) 
bernd Kunden-Status wird benutzt...

bernd authored 16 years ago

120) function set_customer_verified($customerno)
121) {
122)   $customerno = (int) $customerno;
123)   db_query("UPDATE kundendaten.kunden SET status=0 WHERE id={$customerno};");
124)   logger("session/checkuser.php", "register", "set customer's status to 0.");
125) }
126) 
127) function set_customer_lastlogin($customerno)
128) {
129)   $customerno = (int) $customerno;
130)   db_query("UPDATE kundendaten.kunden SET lastlogin=NOW() WHERE id={$customerno};");
131) }
132) 
bernd webinterface => /webinterface

bernd authored 17 years ago

133) function set_customer_password($customerno, $newpass)
134) {
135)   $customerno = (int) $customerno;
136)   $newpass = sha1($newpass);
bernd sql-abfragen abstrahiert

bernd authored 16 years ago

137)   db_query("UPDATE kundendaten.kunden SET passwort='$newpass' WHERE id='".$customerno."' LIMIT 1");
bernd Logging aktiviert

bernd authored 16 years ago

138)   logger("session/checkuser.php", "pwchange", "changed customer's password.");
bernd webinterface => /webinterface

bernd authored 17 years ago

139) }
140) 
141) 
142) function set_systemuser_password($uid, $newpass)
143) {
144)   $uid = (int) $uid;
145)   require_once('inc/base.php');
146)   $salt = random_string(8);
147)   $newpass = crypt($newpass, "\$1\${$salt}\$");
bernd sql-abfragen abstrahiert

bernd authored 16 years ago

148)   db_query("UPDATE system.passwoerter SET passwort='$newpass' WHERE uid='".$uid."' LIMIT 1");
bernd Logging aktiviert

bernd authored 16 years ago

149)   logger("session/checkuser.php", "pwchange", "changed user's password.");
bernd webinterface => /webinterface

bernd authored 17 years ago

150) }
151) 
bernd * Initialisierung der Sessi...

bernd authored 16 years ago

152) 
153) function setup_session($role, $useridentity)
154) {
155)   session_regenerate_id();
156)   $_SESSION['role'] = $role;
157)   if ($role & ROLE_SYSTEMUSER)
158)   {
159)     DEBUG("We are system user");
160)     $info = get_user_info($useridentity);
161)     $_SESSION['userinfo'] = $info;
162)     logger("session/start.php", "login", "logged in user »{$info['username']}«");
163)     $useridentity = $info['customerno'];
164)   }
165)   if ($role & ROLE_CUSTOMER)
166)   {
167)     $info = get_customer_info($useridentity);
168)     $_SESSION['customerinfo'] = $info;
169)     set_customer_lastlogin($info['customerno']);
170)     logger("session/start.php", "login", "logged in customer no »{$info['customerno']}«");
171)   }
172) }
173)