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(){
-->
+ 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}
+
+
+
+
+
+
+
+
+
+
+ {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}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 zur Administration von Jugendchor & Miteinander.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file