]> git.mxchange.org Git - mailer.git/blobdiff - inc/modules/admin.php
- Login failtures added to admin/member menu
[mailer.git] / inc / modules / admin.php
index cb73fecea022525744d1f1f26211dd5dd1e4eb67..285e82eabb83a4b377cd647ef2a8e7e9ce411b54 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, $_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;
                }
        }
@@ -254,18 +299,27 @@ if (!isBooleanConstantAndTrue('admin_registered')) {
        // Only try to remove cookies
        if (set_session("admin_login", "") && set_session("admin_md5", "") && set_session("admin_last", "") && set_session("admin_to", "")) {
                // Also remove array elements
-               set_session('admin_login'       , "");
-               set_session('admin_md5'         , "");
-               set_session('admin_last'        , "");
-               set_session('admin_to'          , "");
+               set_session('admin_login', "");
+               set_session('admin_md5'  , "");
+               set_session('admin_last' , "");
+               set_session('admin_to'   , "");
 
                // Destroy session
                @session_destroy();
 
                // Load logout template
-               if (isset($_GET['sql_patches'])) {
-                       // Special logout redirect for sql_patchrs
-                       LOAD_TEMPLATE("admin_logout_sql_patches");
+               if (isset($_GET['register'])) {
+                       // Secure input
+                       $register = SQL_ESCAPE($_GET['register']);
+
+                       // Special logout redirect for installation of given extension
+                       LOAD_TEMPLATE(sprintf("admin_logout_%s_install", $register));
+               } elseif (isset($_GET['remove'])) {
+                       // Secure input
+                       $remove = SQL_ESCAPE($_GET['remove']);
+
+                       // Special logout redirect for removal of given extension
+                       LOAD_TEMPLATE(sprintf("admin_logout_%s_remove", $remove));
                } else {
                        // Logged out normally
                        LOAD_TEMPLATE("admin_logout");
@@ -279,12 +333,12 @@ if (!isBooleanConstantAndTrue('admin_registered')) {
        }
 } else {
        // Maybe an Admin want's to login?
-       $ret = CHECK_ADMIN_COOKIES(SQL_ESCAPE(get_session('admin_login')), SQL_ESCAPE(get_session('admin_md5')));
+       $ret = CHECK_ADMIN_COOKIES(get_session('admin_login'), get_session('admin_md5'));
        switch ($ret)
        {
        case "done":
                // Cookie-Data accepted
-               if ((set_session("admin_md5", SQL_ESCAPE(get_session('admin_md5')))) && (set_session("admin_login", SQL_ESCAPE(get_session('admin_login')))) && (set_session("admin_last", time())) && (set_session("admin_to", bigintval(get_session('admin_to'))))) {
+               if ((set_session("admin_md5", get_session('admin_md5'))) && (set_session("admin_login", get_session('admin_login'))) && (set_session("admin_last", time())) && (set_session("admin_to", bigintval(get_session('admin_to'))))) {
                        // Ok, Cookie-Update done
                        if ((EXT_IS_ACTIVE("admins")) && (GET_EXT_VERSION("admins") > "0.2")) {
                                // Check if action GET variable was set
@@ -305,7 +359,7 @@ if (!isBooleanConstantAndTrue('admin_registered')) {
                        if (empty($_CONFIG['admin_menu'])) $_CONFIG['admin_menu'] = "OLD";
 
                        // Check for version and switch between old menu system and new "intelligent menu system"
-                       if ((ADMIN_CHECK_MENU_MODE() == "NEW") && (file_exists(PATH."inc/modules/admin/la_sys-inc.php"))) {
+                       if ((ADMIN_CHECK_MENU_MODE() == "NEW") && (FILE_READABLE(PATH."inc/modules/admin/la_sys-inc.php"))) {
                                // Default area is the entrance, of course
                                $area = "entrance";