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 |