Passwort zurücksetzen

This commit is contained in:
aschwarz
2023-03-30 10:46:40 +02:00
parent a117369842
commit d193769a51
9 changed files with 590 additions and 12 deletions

View File

@ -11,10 +11,10 @@ if ($function == 'logout') {
$identifier = $_COOKIE['identifier'];
$securitytoken = $_COOKIE['securitytoken'];
$token_neu = sha1($securitytoken);
$update = $db->query("DELETE FROM jumi_securitytokens
WHERE securitytoken ='$token_neu'
AND identifier = '$identifier'
");
$sql1 = $db->query("DELETE FROM jumi_securitytokens
WHERE securitytoken ='$token_neu'
AND identifier = '$identifier'
");
}
//Cookies entfernen
session_destroy();
@ -117,7 +117,7 @@ if ($function == 'login') {
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Ihr Benutzeraccount ist inaktiv.</div>|***|error';
exit;
}else if (md5($password) != $row['passwort'] or $row['mail'] == ''){ //verschlüsseltes Passwort überprüfen
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Bitte prüfen Sie Ihre Zugangsdaten</div>|***|error';
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Bitte pr&uuml;fen Sie Ihre Zugangsdaten</div>|***|error';
exit;
}else{
$uid = $row['uid'];
@ -150,5 +150,137 @@ if ($function == 'login') {
}
}
if ($function == 'passwortvergessen') {
$mail = $_POST['email'];
$result_pw = $db->query("SELECT uid, aktiv, vorname, nachname, mail FROM jumi_admin WHERE UPPER(mail)=UPPER('$mail')");
$row_pw = $result_pw->fetch_array();
if(!isset($_POST['email']) || empty($_POST['email'])) {
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Bitte geben Sie eine E-Mail-Adresse ein.</div>|***|error';
exit;
} elseif($row_pw['aktiv'] == '0') {
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Der Benutzer ist inaktiv. Melden Sie sich beim Administrator.</div>|***|error';
exit;
}elseif ($row_pw['mail'] == ''){
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Der Benutzer wurde nicht im System gefunden.</div>|***|error';
exit;
}else{
$passwortcode = random_string();
$pwcode_sha1 = sha1($passwortcode);
$uid = $row_pw['uid'];
$vorname = $row_pw['vorname'];
$nachname = $row_pw['nachname'];
# Benutzer auf allen Geräten abmelden
$sql1 = $db->query("DELETE FROM jumi_securitytokens
WHERE uid = '$uid'
");
#
$sql1 = $db->query("UPDATE jumi_admin
SET passwortcode = '$pwcode_sha1'
, passwortcode_time = NOW()
WHERE uid = '$uid'
");
$empfaenger = "$mail";
$betreff = "Passwort vergessen - JU & MI Portal";
$url_passwortcode = 'http://admin.ju-and-mi.de/passwortzuruecksetzen.php?uid='.$row_pw['uid'].'&code='.$passwortcode;
$text = "
<html>
<head>
<title>Passwort vergessen - JU & MI Portal</title>
</head>
<body>
<font face='Arial' size='2'>
Guten Tag $vorname $nachname!<br><br>
für den Account im JU & MI Portal wurde ein neues Passwort angefordert.<br>
Um ein neues Passwort zu vergeben, rufen Sie innerhalb der nächsten 24 Stunden die folgende Website auf:
<br>
<br>
$url_passwortcode<br>
<br>
Sollte Ihnen das Passwort wieder eingefallen sein oder Sie diese nicht angefordert haben, ignorieren Sie bitte diese E-Mail.
</body>
</html>";
$result_absender = $db->query("SELECT wert FROM jumi_parameter WHERE pid = 1");
$row_absender = $result_absender->fetch_array();
if ($row_absender['wert'] == '') {
$absender = 'info@ju-and-mi.de';
} else {
$absender = $row_absender['wert'];
}
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=utf-8\n";
$headers .= "From: Info JU & MI <$absender>\n";
$return = @mail($empfaenger, $betreff, $text, $headers);
if (!$return) { // Abfrage ob Mailversand funktioniert hat
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Es konnte <b>keine Mail</b> verschickt werden!<br>Wenden Sie sich an den Administrator.</div>|***|success';
exit;
} else {
echo '<div class="alert alert-success"><i class="fa fa-fw fa-thumbs-up"></i> Eine Mail wurde Ihnen zugestellt.<br><b>Checken Sie auch den Spam Ordner!</b></div>|***|success';
exit;
}
}
}
if ($function == 'resetpasswort') {
$password_new1 = $_POST['password_new1'];
$password_new2 = $_POST['password_new2'];
$uid = $_POST['uid'];
$code = $_POST['code'];
$result = $db->query("SELECT uid, vorname, nachname, mail, aktiv, passwortcode, passwortcode_time FROM jumi_admin WHERE uid=$uid");
$row = $result->fetch_array();
#Fehlercheck
if(!isset($uid) || !isset($code)) {
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Leider wurde beim Aufruf dieser Website kein Code zum Zur&uuml;cksetzen des Passworts &uuml;bermittelt!</div>|***|error';
exit;
}elseif ($row === null || $row['passwortcode'] === null ) {
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Es wurde kein passender Benutzer gefunden!</div>|***|error';
exit;
}elseif($row['aktiv'] == '0') {
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Der Benutzer ist inaktiv. Melden Sie sich beim Administrator.</div>|***|error';
exit;
}elseif($row['passwortcode_time'] === null || strtotime($row['passwortcode_time']) < (time()-24*3600) ) {
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Der Code ist leider abgelaufen. Setzen Sie das Passwort erneut zur&uuml;ck!</div>|***|error';
exit;
}elseif(sha1($code) != $row['passwortcode']) {
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Der &uuml;bergebene Code war ung&uuml;ltig.<br>Stellen Sie sicher, dass Sie den genauen Link in der URL aufrufen.</div>|***|error';
exit;
}elseif ($password_new1 != $password_new2) {
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Das neue Passwort stimmt nicht mit der Wiederholung &uuml;berein!</div>|***|error';
exit;
}elseif (strlen($password_new1) < 8) {
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Das neue Passwort muss mindestens 8 Zeichen haben!</div>|***|error';
exit;
}else{
$password_md5 = md5($password_new1);
$update = $db->query("UPDATE jumi_admin
SET passwort ='$password_md5'
,passwortcode = NULL
,passwortcode_time = NULL
WHERE uid=$uid
");
if (!$update) {
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Es liegt ein Fehler in der Datenbank vor!</div>|***|error';
exit;
}else{
echo '<div class="alert alert-success"><i class="fa fa-fw fa-thumbs-up"></i> Das Passwort wurde geändert!</div>|***|success';
exit;
}
}
}
?>