bernd commited on 2008-05-19 17:59:56
Zeige 2 geänderte Dateien mit 81 Einfügungen und 0 Löschungen.
git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@1078 87cf0b9e-d624-0410-a070-f6ee81989793
... | ... |
@@ -22,10 +22,21 @@ function validate_token($customerno, $token) |
22 | 22 |
} |
23 | 23 |
|
24 | 24 |
|
25 |
+function validate_uid_token($uid, $token) |
|
26 |
+{ |
|
27 |
+ expire_tokens(); |
|
28 |
+ $uid = (int) $uid; |
|
29 |
+ $token = mysql_real_escape_string($token); |
|
30 |
+ $result = db_query("SELECT NULL FROM system.usertoken WHERE uid={$uid} AND token='{$token}';"); |
|
31 |
+ return (mysql_num_rows($result) > 0); |
|
32 |
+} |
|
33 |
+ |
|
34 |
+ |
|
25 | 35 |
function expire_tokens() |
26 | 36 |
{ |
27 | 37 |
$expire = "1 DAY"; |
28 | 38 |
db_query("UPDATE kundendaten.kunden SET token=NULL, token_create=NULL WHERE token_create < NOW() - INTERVAL {$expire};"); |
39 |
+ db_query("DELETE FROM system.usertoken WHERE expire < NOW();"); |
|
29 | 40 |
} |
30 | 41 |
|
31 | 42 |
function invalidate_customer_token($customerno) |
... | ... |
@@ -34,6 +45,12 @@ function invalidate_customer_token($customerno) |
34 | 45 |
db_query("UPDATE kundendaten.kunden SET token=NULL, token_create=NULL WHERE id={$customerno} LIMIT 1;"); |
35 | 46 |
} |
36 | 47 |
|
48 |
+function invalidate_systemuser_token($uid) |
|
49 |
+{ |
|
50 |
+ $uid = (int) $uid; |
|
51 |
+ db_query("DELETE FROM system.usertoken WHERE uid={$uid} LIMIT 1;"); |
|
52 |
+} |
|
53 |
+ |
|
37 | 54 |
function create_token($customerno) |
38 | 55 |
{ |
39 | 56 |
$customerno = (int) $customerno; |
... | ... |
@@ -0,0 +1,64 @@ |
1 |
+<?php |
|
2 |
+$title = "Passwort setzen"; |
|
3 |
+ |
|
4 |
+$show = 'token'; |
|
5 |
+ |
|
6 |
+if (isset($_REQUEST['uid']) and isset($_REQUEST['token'])) |
|
7 |
+{ |
|
8 |
+ $uid = (int) $_REQUEST['uid']; |
|
9 |
+ $token = $_REQUEST['token']; |
|
10 |
+ |
|
11 |
+ require_once('newpass.php'); |
|
12 |
+ require_once('inc/security.php'); |
|
13 |
+ if (validate_uid_token($uid, $token)) |
|
14 |
+ { |
|
15 |
+ $show = 'password'; |
|
16 |
+ if (isset($_POST['password'])) |
|
17 |
+ { |
|
18 |
+ if ($_POST['password'] != $_POST['password2']) |
|
19 |
+ input_error("Die beiden Passwort-Eingaben stimmen nicht überein."); |
|
20 |
+ elseif ($_POST['password'] == '') |
|
21 |
+ input_error("Es kann kein leeres Passwort gesetzt werden"); |
|
22 |
+ elseif (($result = strong_password($_POST['password'])) !== true) |
|
23 |
+ input_error("Das Passwort ist zu einfach (cracklib sagt: {$result})!"); |
|
24 |
+ else |
|
25 |
+ { |
|
26 |
+ require_once('session/checkuser.php'); |
|
27 |
+ require_once('inc/base.php'); |
|
28 |
+ logger("modules/index/initialize_useraccount.php", "initialize", "uid »{$uid}« set a new password"); |
|
29 |
+ set_systemuser_password($uid, $_POST['password']); |
|
30 |
+ success_msg('Das Passwort wurde gesetzt!'); |
|
31 |
+ invalidate_systemuser_token($uid); |
|
32 |
+ $_SESSION['role'] = find_role($uid, '', True);; |
|
33 |
+ setup_session($_SESSION['role'], $uid); |
|
34 |
+ output('<h3>Passwort gesetzt</h3> |
|
35 |
+ <p>Ihr neues Passwort wurde gesetzt, Sie können jetzt <a href="index.php">die Web-Oberfläche sofort benutzen</a>.</p>'); |
|
36 |
+ $show = NULL; |
|
37 |
+ } |
|
38 |
+ } |
|
39 |
+ } |
|
40 |
+ else |
|
41 |
+ { |
|
42 |
+ input_error("Der eingegebene Code war nicht korrekt. Bitte benutzen Sie die Kopieren & Einfügen-Operation!"); |
|
43 |
+ } |
|
44 |
+} |
|
45 |
+ |
|
46 |
+if ($show == 'password') |
|
47 |
+{ |
|
48 |
+ output('<h3>Neues Passwort setzen</h3> |
|
49 |
+ <p>Bitte legen Sie jetzt Ihr neues Passwort fest.</p>'. |
|
50 |
+ html_form('initialize_useraccount', '', '', '<p style="display: none"><input type="hidden" name="uid" value="'.$uid.'" /> |
|
51 |
+ <input type="hidden" name="token" value="'.$token.'" /></p> |
|
52 |
+ <p><span class="login_label">Neues Passwort:</span> <input type="password" name="password" size="30" /></p> |
|
53 |
+ <p><span class="login_label">Bestätigung:</span> <input type="password" name="password2" size="30" /></p> |
|
54 |
+ <p><span class="login_label"> </span> <input type="submit" value="Passwort setzen" /></p> |
|
55 |
+ ')); |
|
56 |
+} |
|
57 |
+elseif ($show == 'token') |
|
58 |
+{ |
|
59 |
+ output('<h3>Neues Passwort setzen</h3> |
|
60 |
+ <p>Bitte rufen Sie die Adresse aus Ihrer Begrüßungs-E-Mail auf um ein neues Passwort zu setzen.'); |
|
61 |
+} |
|
62 |
+ |
|
63 |
+ |
|
64 |
+?> |
|
0 | 65 |