Browse code

Passwort-Reset-Funktion aktualisiert

Bernd Wurst authored on12/01/2017 12:17:32
Showing3 changed files
... ...
@@ -30,6 +30,9 @@ Bitte besuchen Sie folgende Adresse um Ihr Passwort neu zu setzen:
30 30
 
31 31
 Mit freundlichen Grüßen,
32 32
 Ihre Admins von '.config('company_name');
33
+
34
+  $msg .= "\n\nDiese Anforderung haben wir am ".date("r")." von der IP-Adresse\n{$_SERVER['REMOTE_ADDR']} erhalten.\nSofern Sie dies nicht ausgelöst haben, benachrichtigen Sie bitte den Support\ndurch eine Antwort auf diese E-Mail.";
35
+
33 36
   send_mail($email, "Passwortanforderung fuer schokokeks.org", $msg);
34 37
 }
35 38
 
... ...
@@ -75,7 +78,7 @@ function send_mail($address, $subject, $body)
75 78
 {
76 79
   if (strstr($subject, "\n") !== false)
77 80
     die("Zeilenumbruch im subject!");
78
-  $header = "From: ".config('company_name')." Web Administration <noreply@".config('masterdomain').">\r\nReply-To: ".config('adminmail')."\r\nContent-Type: text/plain; charset=\"utf-8\"\r\nContent-Transfer-Encoding: 8bit";
81
+  $header = "From: ".config('company_name')." Web Administration <noreply@".config('masterdomain').">\r\nReply-To: ".config('adminmail')."\r\nCc: ".config('adminmail')."\r\nContent-Type: text/plain; charset=\"utf-8\"\r\nContent-Transfer-Encoding: 8bit";
79 82
   mail($address, $subject, $body, $header);
80 83
 }
81 84
 
... ...
@@ -26,7 +26,18 @@ function user_customer_match($cust, $user)
26 26
   return false;
27 27
 }
28 28
 
29
-
29
+function find_username($input) 
30
+{
31
+  $args = array(":user" => $input);
32
+  $result = db_query("SELECT username FROM system.useraccounts WHERE username=:user AND kundenaccount=1", $args);
33
+  if ($result->rowCount() > 0)
34
+  {
35
+    $line = $result->fetch();
36
+    return $line['username'];
37
+  } else {
38
+    return false;
39
+  }
40
+}
30 41
 
31 42
 function customer_has_email($customerno, $email)
32 43
 {
... ...
@@ -108,7 +119,7 @@ function create_token($username)
108 119
   
109 120
   $args = array(":uid" => $uid,
110 121
                 ":token" => random_string(16));
111
-  db_query("INSERT INTO system.usertoken VALUES (:uid} NOW(), NOW() + INTERVAL 1 DAY, :token)", $args);
122
+  db_query("INSERT INTO system.usertoken VALUES (:uid, NOW(), NOW() + INTERVAL 1 DAY, :token)", $args);
112 123
   return true;
113 124
 }
114 125
 
... ...
@@ -19,31 +19,27 @@ title("Neues Passwort beantragen");
19 19
 //require_once('inc/error.php');
20 20
 //system_failure("Diese Funktion ist noch nicht fertiggestellt.");
21 21
 
22
-if (isset($_POST['customerno']) && isset($_POST['username']))
22
+if (isset($_POST['username']))
23 23
 {
24 24
   require_once('newpass.php');
25
-  if (user_customer_match($_POST['customerno'], $_POST['username']))
25
+  $username = find_username($_POST['username']);
26
+  if ($username)
26 27
   {
27
-    if (create_token($_POST['username']))
28
+    if (create_token($username))
28 29
     {
29 30
       require_once('mail.php');
30 31
       require_once('inc/base.php');
31
-      send_user_token($_POST['username']);
32
-      logger(LOG_INFO, "modules/index/lost_password", "pwrecovery", "token sent for customer »{$_POST['customerno']}/{$_POST['username']}«");
33
-      success_msg('Die angegebenen Daten waren korrekt, Sie sollten umgehend eine E-Mail erhalten.');
32
+      send_user_token($username);
33
+      logger(LOG_INFO, "modules/index/lost_password", "pwrecovery", "token sent for customer »{$_POST['username']}/{$username}«");
34 34
     }
35 35
   }
36
-  else
37
-  {
38
-    input_error("Die eingegebenen Daten waren nicht korrekt. Sollten Sie die Daten nicht mehr kennen, wenden Sie sich bitte an einen Administrator.");
39
-  }
36
+  success_msg('Sofern die eingegebenen Daten korrekt waren, erhalten Sie umgehend eine E-Mail.');
40 37
 }
41 38
 
42
-output('<p>Wenn Sie Ihr Kundenpasswort nicht mehr kennen, können Sie hier ein neues Passwort beantragen. Sie müssen dafür Ihre Kundennummer und Ihren Benutzernamen kennen. Kennen Sie diese Daten nicht, wenden Sie sich bitte <a href="mailto:'.config('adminmail').'">an die Administratoren</a>.</p>
43
-<p>Nach dem Ausfüllen dieses Formulars erhalten Sie eine E-Mail mn die bei uns hinterlegte E-Mail-Adresse. Diese Mail enthält einem Link, den Sie in Ihrem Browser öffnen müssen. Dort können Sie dann ein neues Passwort eingeben.</p>
39
+output('<p>Wenn Sie Ihr Benutzer-Passwort nicht mehr kennen, können Sie hier ein neues Passwort beantragen. Sie müssen dafür Ihren Benutzernamen kennen. Kennen Sie diese Daten nicht, wenden Sie sich bitte <a href="mailto:'.config('adminmail').'">an die Administratoren</a>.</p>
40
+<p>Nach dem Ausfüllen dieses Formulars erhalten Sie eine E-Mail an die bei uns hinterlegte E-Mail-Adresse. Diese Mail enthält einem Link, den Sie in Ihrem Browser öffnen müssen. Dort können Sie dann ein neues Passwort eingeben.</p>
44 41
 <p><span style="font-weight: bold;">Hinweis:</span> Sie können auf diesem Weg nur das Passwort des Hauptbenutzers neu anfordern. Sind Sie Mitbenutzer eines anderen Kunden, dann kann dieser Ihr Passwort neu setzen.</p>
45 42
 <form action="" method="post">
46
-<p><span class="login_label">Kundennummer:</span> <input type="text" name="customerno" size="30" /></p>
47 43
 <p><span class="login_label">Benutzername:</span> <input type="text" name="username" size="30" /></p>
48 44
 <p><span class="login_label">&#160;</span> <input type="submit" value="Passwort anfordern" /></p>
49 45
 </form>');