disabled) { $auth['success'] = false; Error::add('general', T_('User Disabled please contact Admin')); debug_event('Login', scrub_out($username) . ' is disabled and attempted to login', '1'); } // if user disabled elseif (Config::get('prevent_multiple_logins')) { $session_ip = $user->is_logged_in(); $current_ip = inet_pton($_SERVER['REMOTE_ADDR']); if ($current_ip && ($current_ip != $session_ip)) { $auth['success'] = false; Error::add('general', T_('User Already Logged in')); debug_event('Login', scrub_out($username) . ' is already logged in from ' . $session_ip . ' and attempted to login from ' . $current_ip, '1'); } // if logged in multiple times } // if prevent multiple logins elseif (Config::get('auto_create') && $auth['success'] && ! $user->username) { /* This is run if we want to autocreate users who don't exist (useful for non-mysql auth) */ $access = Config::get('auto_user') ? User::access_name_to_level(Config::get('auto_user')) : '5'; $name = $auth['name']; $email = $auth['email']; /* Attempt to create the user */ if (User::create($username, $name, $email, hash('sha256', mt_rand()), $access)) { $user = User::get_from_username($username); } else { $auth['success'] = false; Error::add('general', T_('Unable to create local account')); } } // End if auto_create // This allows stealing passwords validated by external means // such as LDAP if (Config::get('auth_password_save') && $auth['success'] && $password) { $user->update_password($password); } } // if we aren't in demo mode } // if they passed a username/password /* If the authentication was a success */ if ($auth['success']) { // $auth->info are the fields specified in the config file // to retrieve for each user Session::create($auth); // Not sure if it was me or php tripping out, // but naming this 'user' didn't work at all $_SESSION['userdata'] = $auth; // Record the IP of this person! if (Config::get('track_user_ip')) { $user->insert_ip_history(); } /* Make sure they are actually trying to get to this site and don't try * to redirect them back into an admin section */ $web_path = Config::get('web_path'); if ((substr($_POST['referrer'], 0, strlen($web_path)) == $web_path) && strpos($_POST['referrer'], 'install.php') === false && strpos($_POST['referrer'], 'login.php') === false && strpos($_POST['referrer'], 'logout.php') === false && strpos($_POST['referrer'], 'update.php') === false && strpos($_POST['referrer'], 'activate.php') === false && strpos($_POST['referrer'], 'admin') === false ) { header('Location: ' . $_POST['referrer']); exit(); } // if we've got a referrer header('Location: ' . Config::get('web_path') . '/index.php'); exit(); } // auth success require Config::get('prefix') . '/templates/show_login_form.inc.php'; ?>