]> git.mxchange.org Git - mailer.git/blobdiff - inc/modules/admin.php
Password reset for admin login added (still buggy if cache is installed and sql_patch...
[mailer.git] / inc / modules / admin.php
index cb73fecea022525744d1f1f26211dd5dd1e4eb67..ed6f004ddf4a0686d74f1f198e6699be1270491d 100644 (file)
@@ -140,6 +140,51 @@ if (!isBooleanConstantAndTrue('admin_registered')) {
                // Load register template
                LOAD_TEMPLATE("admin_reg_form");
        }
+} elseif (isset($_GET['reset_pass'])) {
+       // Is the form submitted?
+       if ((isset($_POST['send_link'])) && (!empty($_POST['email']))) {
+               // Try to send the link out
+               $OUT = ADMIN_SEND_PASSWORD_RESET_LINK($_POST['email']);
+
+               // Output result
+               LOAD_TEMPLATE("admin_settings_saved", false, $OUT);
+       } elseif (!empty($_GET['hash'])) {
+               // Output form for hash validation
+               LOAD_TEMPLATE("admin_validate_reset_hash_form", false, SQL_ESCAPE($_GET['hash']));
+       } elseif ((isset($_POST['validate_hash'])) && (!empty($_POST['login'])) && (!empty($_POST['hash']))) {
+               // Validate the login data and hash
+               $valid = ADMIN_VALIDATE_RESET_LINK_HASH_LOGIN($_POST['hash'], $_POST['login']);
+
+               // Valid?
+               if ($valid) {
+                       // Prepare content first
+                       $content = array(
+                               'hash'  => SQL_ESCAPE($_POST['hash']),
+                               'login' => SQL_ESCAPE($_POST['login'])
+                       );
+
+                       // Validation okay so display form for final password change
+                       LOAD_TEMPLATE("admin_reset_password_form", false, $content);
+               } else {
+                       // Cannot validate the login data and hash
+                       LOAD_TEMPLATE("admin_settings_saved", false, ADMIN_VALIDATION_RESET_LOGIN_HASH_FAILED);
+               }
+       } elseif ((isset($_POST['reset_pass'])) && (!empty($_POST['hash'])) && (!empty($_POST['login'])) && (!empty($_POST['pass1'])) && ($_POST['pass1'] == $_POST['pass2'])) {
+               // Okay, we shall the admin password here. So first revalidate the hash
+               if (ADMIN_VALIDATE_RESET_LINK_HASH_LOGIN($_POST['hash'], $_POST['login'])) {
+                       // Set the password now
+                       $OUT = ADMIN_RESET_PASSWORD($_POST['login'], $_POST['pass1']);
+
+                       // Output result
+                       LOAD_TEMPLATE("admin_reset_pass_done", false, $OUT);
+               } else {
+                       // Validation failed
+                       LOAD_TEMPLATE("admin_settings_saved", false, ADMIN_VALIDATION_RESET_LOGIN_HASH_FAILED2);
+               }
+       } else {
+               // Output reset password form
+               LOAD_TEMPLATE("admin_send_reset_link");
+       }
 } elseif ((!isSessionVariableSet('admin_login')) || (!isSessionVariableSet('admin_md5')) || (!isSessionVariableSet('admin_last')) || (!isSessionVariableSet('admin_to')) || ((get_session('admin_last') + bigintval(get_session('admin_to')) * 3600 * 24) < time())) {
        // At leat one administrator account was created
        if ((isSessionVariableSet('admin_login')) && (isSessionVariableSet('admin_md5')) && (isSessionVariableSet('admin_last')) && (isSessionVariableSet('admin_to'))) {
@@ -150,7 +195,7 @@ if (!isBooleanConstantAndTrue('admin_registered')) {
        if (!empty($_GET['register'])) {
                // Registration of first admin is done
                if ($_GET['register'] == "done") OUTPUT_HTML("<STRONG class=\"admin\">".ADMIN_REGISTER_DONE."</STRONG>");
-       }
+       } // END - if
 
        // Check if the admin has submitted data or not
        $ret = "";
@@ -185,7 +230,7 @@ if (!isBooleanConstantAndTrue('admin_registered')) {
 
                case "pass": // Wrong password
                        $_POST['ok'] = $ret;
-                       $ret = WRONG_PASS;
+                       $ret = WRONG_PASS." [<A href=\"".URL."/modules.php?module=admin&amp;reset_pass=1\">".ADMIN_RESET_PASS."</A>]\n";
                        break;
                }
        }