diff --git a/controller/admin_login.php b/controller/admin_login.php index 57e5c1c..072d5b8 100644 --- a/controller/admin_login.php +++ b/controller/admin_login.php @@ -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 '
Ihr Benutzeraccount ist inaktiv.
|***|error'; exit; }else if (md5($password) != $row['passwort'] or $row['mail'] == ''){ //verschlüsseltes Passwort überprüfen - echo '
Bitte prüfen Sie Ihre Zugangsdaten
|***|error'; + echo '
Bitte prüfen Sie Ihre Zugangsdaten
|***|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 '
Bitte geben Sie eine E-Mail-Adresse ein.
|***|error'; + exit; + } elseif($row_pw['aktiv'] == '0') { + echo '
Der Benutzer ist inaktiv. Melden Sie sich beim Administrator.
|***|error'; + exit; + }elseif ($row_pw['mail'] == ''){ + echo '
Der Benutzer wurde nicht im System gefunden.
|***|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 = " + + + Passwort vergessen - JU & MI Portal + + + + Guten Tag $vorname $nachname!

+ für den Account im JU & MI Portal wurde ein neues Passwort angefordert.
+ Um ein neues Passwort zu vergeben, rufen Sie innerhalb der nächsten 24 Stunden die folgende Website auf: +
+
+ $url_passwortcode
+
+ Sollte Ihnen das Passwort wieder eingefallen sein oder Sie diese nicht angefordert haben, ignorieren Sie bitte diese E-Mail. + + "; + $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 '
Es konnte keine Mail verschickt werden!
Wenden Sie sich an den Administrator.
|***|success'; + exit; + } else { + echo '
Eine Mail wurde Ihnen zugestellt.
Checken Sie auch den Spam Ordner!
|***|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 '
Leider wurde beim Aufruf dieser Website kein Code zum Zurücksetzen des Passworts übermittelt!
|***|error'; + exit; + }elseif ($row === null || $row['passwortcode'] === null ) { + echo '
Es wurde kein passender Benutzer gefunden!
|***|error'; + exit; + }elseif($row['aktiv'] == '0') { + echo '
Der Benutzer ist inaktiv. Melden Sie sich beim Administrator.
|***|error'; + exit; + }elseif($row['passwortcode_time'] === null || strtotime($row['passwortcode_time']) < (time()-24*3600) ) { + echo '
Der Code ist leider abgelaufen. Setzen Sie das Passwort erneut zurück!
|***|error'; + exit; + }elseif(sha1($code) != $row['passwortcode']) { + echo '
Der übergebene Code war ungültig.
Stellen Sie sicher, dass Sie den genauen Link in der URL aufrufen.
|***|error'; + exit; + }elseif ($password_new1 != $password_new2) { + echo '
Das neue Passwort stimmt nicht mit der Wiederholung überein!
|***|error'; + exit; + }elseif (strlen($password_new1) < 8) { + echo '
Das neue Passwort muss mindestens 8 Zeichen haben!
|***|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 '
Es liegt ein Fehler in der Datenbank vor!
|***|error'; + exit; + }else{ + echo '
Das Passwort wurde geändert!
|***|success'; + exit; + } + + } +} + + ?> \ No newline at end of file diff --git a/dashboard/passwortvergessen.php b/dashboard/passwortvergessen.php new file mode 100644 index 0000000..e620f35 --- /dev/null +++ b/dashboard/passwortvergessen.php @@ -0,0 +1,21 @@ +assign('action', "$action"); +$smarty->display("modern/dashboard/$templatename"); +?> diff --git a/dashboard/passwortzuruecksetzen.php b/dashboard/passwortzuruecksetzen.php new file mode 100644 index 0000000..748a56a --- /dev/null +++ b/dashboard/passwortzuruecksetzen.php @@ -0,0 +1,39 @@ +"; +*/ +include_once '../classes/TestProjektSmarty.class_subdir.php'; +#require_once("../config.inc.php"); +require_once("../config/datenbankanbindung.php"); +$smarty = new SmartyAdmin(); +$templatename = substr(basename($_SERVER['PHP_SELF']),0,-3)."html"; +require_once "../language/german.inc.php"; + + +$action = $_GET['action']; +if($action == ''){ + $uid = $_GET['uid']; + $code = $_GET['code']; + $smarty->assign('uid', "$uid"); + $smarty->assign('code', "$code"); + if(!isset($_GET['uid']) || !isset($_GET['code'])) { + $smarty->assign('error', 1); + $smarty->assign('error_text', '
Leider wurde beim Aufruf dieser Website kein Code zum Zurücksetzen des Passworts übermittelt!
'); +} +# Token: b9b48563d251d9e52bd1352545747e30 +# SHA Token: 76eafa7873f2331794036360414bff2473b66fa6 +# localhost/survey/dashboard/passwortzuruecksetzen.php?uid=1&code=b9b48563d251d9e52bd1352545747e30 +} + + +$smarty->assign('action', "$action"); +$smarty->display("modern/dashboard/$templatename"); + + +?> diff --git a/js/components/admin_login.js b/js/components/admin_login.js index fc35b27..e3679d5 100644 --- a/js/components/admin_login.js +++ b/js/components/admin_login.js @@ -40,4 +40,67 @@ function login(){ console.log(xhr); } }); +} + +function passwortvergessen(){ + var email = document.getElementById("mail_pwvergessen").value; + + $.ajax({ + type: 'POST', + url: '../controller/admin_login.php', + data: { + 'function': 'passwortvergessen', + 'email': email + }, + success: function(result) { //we got the response + if(result!=''){ + var a = result.split('|***|'); + if(a[1]=="success"){ + document.getElementById("mail_pwvergessen").value =""; + } + $('#msg').show().delay(10000).fadeOut(500); + $('#msg').html(a[0]); + } + }, + error: function(xhr, status, exception) { + console.log(xhr); + } + }); +} + + +function resetpasswort(){ + var password_new1 = document.getElementById("password_new1").value; + var password_new2 = document.getElementById("password_new2").value; + var code = document.getElementById("code").value; + var uid = document.getElementById("uid").value; + + $.ajax({ + type: 'POST', + url: '../controller/admin_login.php', + data: { + 'function': 'resetpasswort', + 'password_new1': password_new1, + 'password_new2': password_new2, + 'code': code, + 'uid': uid + }, + success: function(result) { //we got the response + if(result!=''){ + var a = result.split('|***|'); + if(a[1]=="success"){ + document.getElementById("password_new1").value =""; + document.getElementById("password_new2").value =""; + $(document).ajaxStop(function(){ + setTimeout(() => { window.location = "login.php"; }, 1000); + }); + } + $('#msg').show().delay(10000).fadeOut(500); + $('#msg').html(a[0]); + } + }, + error: function(xhr, status, exception) { + console.log(xhr); + } + }); } \ No newline at end of file diff --git a/sql/passwortcode.sql b/sql/passwortcode.sql new file mode 100644 index 0000000..2f18004 --- /dev/null +++ b/sql/passwortcode.sql @@ -0,0 +1,22 @@ +ALTER TABLE `jumi_admin` ADD `passwortcode` VARCHAR(255) NULL DEFAULT NULL AFTER `passwort`, ADD `passwortcode_time` TIMESTAMP NULL DEFAULT NULL AFTER `passwortcode`; +ALTER TABLE `jumi_admin` CHANGE `passwortcode` `passwortcode` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT 'Passwort vergessen', CHANGE `passwortcode_time` `passwortcode_time` TIMESTAMP NULL DEFAULT NULL COMMENT 'Passwort vergessen'; + + +https://forum.chip.de/discussion/663654/firefox-dazu-zwingen-seite-komplett-neu-zu-laden + + +1. Öffnen Sie Firefox. +2. Geben Sie in der Adresszeile "about:config" ein und klicken Sie auf die "Go"-Schaltfläche. +3. Suchen Sie über die Filter-Zeile nach "cache". +4. Markieren Sie die Zeile "browser.cache.check_doc_frequency". +5. Klicken Sie diese doppelt an oder wählen Sie im Kontextenü der Zeile "Bearbeiten". +6. Setzen Sie den Standardwert "3" auf "1". +7. Bestätigen Sie mit "OK". + +Folgende Werte stehen zur Verfügung: + +Wert Bedeutung +0 einmal pro Sitzung +1 jedes Mal +2 nie +3 automatisch oder wenn erforderlich \ No newline at end of file diff --git a/templates/modern/dashboard/login.html b/templates/modern/dashboard/login.html index ad290ce..105b373 100644 --- a/templates/modern/dashboard/login.html +++ b/templates/modern/dashboard/login.html @@ -73,19 +73,21 @@ $(document).ready(function(){ -->
-
+ Angemeldet bleiben +
+   - -
+ Passwort vergessen + + + diff --git a/templates/modern/dashboard/passwortvergessen.html b/templates/modern/dashboard/passwortvergessen.html new file mode 100644 index 0000000..e562985 --- /dev/null +++ b/templates/modern/dashboard/passwortvergessen.html @@ -0,0 +1,96 @@ +{if $action == ''} + + + + + + + + + JU & MI Passwort vergessen + + + + + + + + + + + + {literal} + + {/literal} +
+
+
+ + +
+
+
+
+
+
+

Passwort vergessen

+
+
+
+ + +
+
+ +
+
+
+
+
+
+ +
+ {literal} + + {/literal} +
+ +
+ + +{/if} diff --git a/templates/modern/dashboard/passwortzuruecksetzen.html b/templates/modern/dashboard/passwortzuruecksetzen.html new file mode 100644 index 0000000..4ef876c --- /dev/null +++ b/templates/modern/dashboard/passwortzuruecksetzen.html @@ -0,0 +1,111 @@ +{if $action == ''} + + + + JU & MI Passwort + + + + + + + + + + + + + + + + + {literal} + + {/literal} +
+
+
+ + +
+
+
+
+
+
+

Passwort vergeben

+
+
+
+
+
Neues Passwort:
+
+ + + +
+
+
+
Passwortwiederholung:
+
+ +
+
+
+
+ +
+
+ {if $error == 1} +
{$error_text}
+ {/if} +
+
+
+
+ +
+ {literal} + + {/literal} +
+ +
+ + +{/if} diff --git a/templates/modern/dashboard/startseite.html# b/templates/modern/dashboard/startseite.html# new file mode 100644 index 0000000..cde7717 --- /dev/null +++ b/templates/modern/dashboard/startseite.html# @@ -0,0 +1,92 @@ + + + + JU & MI Startseite + + + + + + + + + + + + + + + {literal} + + {/literal} +
+ + +
+
+
+
+
+ + Herzlich willkommen {$startseite_name} +
+
+

Herzlich willkommen zur Administration von Jugendchor & Miteinander.

+

+ + + +
+
+
+
+ + +
+
+ + + \ No newline at end of file