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 |