$mybb->input['password'] = $mybb->get_input('quick_password'); $mybb->input['username'] = $mybb->get_input('quick_username'); $mybb->input['remember'] = $mybb->get_input('quick_remember'); } $user = array('username' => $mybb->get_input('username'), 'password' => $mybb->get_input('password'), 'remember' => $mybb->get_input('remember'), 'imagestring' => $mybb->get_input('imagestring')); $options = array('fields' => 'loginattempts', 'username_method' => (int) $mybb->settings['username_method']); $user_loginattempts = get_user_by_username($user['username'], $options); $user['loginattempts'] = (int) $user_loginattempts['loginattempts']; $loginhandler->set_data($user); $validated = $loginhandler->validate_login(); if (!$validated) { $mybb->input['action'] = "login"; $mybb->request_method = "get"; my_setcookie('loginattempts', $logins + 1); $db->update_query("users", array('loginattempts' => 'loginattempts+1'), "uid='" . (int) $loginhandler->login_data['uid'] . "'", 1, true); $errors = $loginhandler->get_friendly_errors(); $user['loginattempts'] = (int) $loginhandler->login_data['loginattempts']; // If we need a captcha set it here if ($mybb->settings['failedcaptchalogincount'] > 0 && ($user['loginattempts'] > $mybb->settings['failedcaptchalogincount'] || (int) $mybb->cookies['loginattempts'] > $mybb->settings['failedcaptchalogincount'])) { $do_captcha = true; $correct = $loginhandler->captcha_verified; } } else { if ($validated && $loginhandler->captcha_verified == true) { // Successful login if ($loginhandler->login_data['coppauser']) { error($lang->error_awaitingcoppa); } $loginhandler->complete_login(); $plugins->run_hooks("member_do_login_end"); $mybb->input['url'] = $mybb->get_input('url');
/** * Login procedure for a user + password * Possible ToDo: Return error messages / array / whatever * * @param string $username Username * @param string $password Password of User * @return boolean */ public function login($username, $password) { $this->plugins->run_hooks("member_do_login_start"); /** * If we are already logged in, we do not have to perform the login procedure */ if ($this->isLoggedIn()) { return true; } // Is a fatal call if user has had too many tries $errors = array(); $logins = login_attempt_check(); require_once MYBB_ROOT . "inc/datahandlers/login.php"; $loginhandler = new LoginDataHandler("get"); $user = array('username' => $username, 'password' => $password, 'remember' => "yes", 'imagestring' => $captcha_string); $options = array('fields' => 'loginattempts', 'username_method' => (int) $this->mybb->settings['username_method']); $user_loginattempts = get_user_by_username($user['username'], $options); $user['loginattempts'] = (int) $user_loginattempts['loginattempts']; $loginhandler->set_data($user); $validated = $loginhandler->validate_login(); if (!$validated) { $this->mybb->input['action'] = "login"; $this->mybb->request_method = "get"; my_setcookie('loginattempts', $logins + 1); $this->db->update_query("users", array('loginattempts' => 'loginattempts+1'), "uid='" . (int) $loginhandler->login_data['uid'] . "'", 1, true); $errors = $loginhandler->get_friendly_errors(); $user['loginattempts'] = (int) $loginhandler->login_data['loginattempts']; // TODO: Force Captchas return false; } else { if ($validated && $loginhandler->captcha_verified == true) { // Successful login but requires captcha if ($loginhandler->login_data['coppauser']) { //error($this->lang->error_awaitingcoppa); return false; } $loginhandler->complete_login(); $this->plugins->run_hooks("member_do_login_end"); $this->mybb->session->init(); // Saving login data in user, so isLoggedIn works without having to reload the page //$this->mybb->user = $loginhandler->login_data; //$this->mybb->user = get_user($loginhandler->login_data['uid']); // Required to be able to logout immediately after logging in // This line is located in class_session.php of mybb //$this->mybb->user['logoutkey'] = md5($this->mybb->user['loginkey']); } } $this->plugins->run_hooks("member_do_login_end"); return true; }