public static function login($username, $password, $keep_signed, &$errors, $login_as_user = false, $autoriseByUsername = false) { $login = SJB_UserManager::login($username, $password, $errors, $autoriseByUsername, $login_as_user); if ($login) { if (SJB_UserManager::checkBan($errors)) { return false; } $userInfo = SJB_UserManager::getUserInfoByUserName($username); if (!$userInfo['active']) { $errors['USER_NOT_ACTIVE'] = 1; return false; } // if "Approve Users by Admin" option is turned on $userGroupInfo = SJB_UserGroupManager::getUserGroupInfoBySID($userInfo['user_group_sid']); if (!empty($userGroupInfo['approve_user_by_admin']) && 'Approved' != $userInfo['approval']) { $errors['USER_NOT_APPROVED'] = 1; return false; } $loginParams = array('username' => $username, 'password' => $password); SJB_Event::dispatch('Login', $loginParams); if ($keep_signed) { SJB_Authorization::keepUserSignedIn($userInfo); } SJB_DB::query('update `users` set `ip` = ?s where `sid` = ?n', $_SERVER['REMOTE_ADDR'], $userInfo['sid']); if (!empty($userInfo['parent_sid'])) { $subuserInfo = $userInfo; $userInfo = SJB_UserManager::getUserInfoBySID($userInfo['parent_sid']); $userInfo['subuser'] = $subuserInfo; } SJB_Authorization::setSessionForUser($userInfo); return true; } return false; }