header("Refresh: 0; url={$baseurl}");
        $deferredJS .= "\nwindow.location.href=\"{$baseurl}\";";
    }
}
// $random = "<li><a href='#' id='totp_help'>Help with Two-Factor Authentication</a></li>";
try {
    $has2fa = strbool($user->has2FA());
} catch (Exception $e) {
    $has2fa = false;
}
try {
    $emailHtml = "<p class='primary-email' data-alternate='false' data-user='******'>" . $user->getUsername();
    $emailVerifiedBadge = $user->isVerified() ? " <span class='glyphicon glyphicon-check text-success' data-toggle='tooltip' title='Verified Email'></span>" : " <button class='btn btn-xs btn-success verify-email'>Verify Now</button>";
    $unrestricted = $user->meetsRestrictionCriteria() ? " <span class='glyphicon glyphicon-star' data-toggle='tooltip' title='Unrestricted User'></span>" : "";
    $emailHtml .= $emailVerifiedBadge . $unrestricted . "</p>";
    if ($user->hasAlternateEmail()) {
        $alternateEmailHtml = "<p class='text-muted alternate-email' data-alternate='true' data-user='******'>" . $user->getAlternateEmail();
        $emailVerifiedBadge = $user->isVerified(true) ? "  <span class='glyphicon glyphicon-check text-success' data-toggle='tooltip' title='Verified Email'></span>" : " <button class='btn btn-xs btn-success verify-email'>Verify Now</button>";
        $alternateEmailHtml .= $emailVerifiedBadge . " <button class='btn btn-xs btn-info' id='add-alternate'>Change</button></p>";
    } else {
        $alternateEmailHtml = "<p class='text-muted alternate-email' data-alternate='true' data-user='******'>No alternate email set <button class='btn btn-xs btn-info' id='add-alternate'>Add One</button></p>";
    }
} catch (Exception $e) {
    $emailHtml = "";
    $alternateEmailHtml = "";
}
$settings_blob = "<section id='account_settings' class='panel panel-default clearfix'><div class='panel-heading'><h2 class='panel-title'>Settings</h2></div><div class='panel-body'>" . $emailHtml . $alternateEmailHtml . "<ul id='settings_list'><li><a href='#' id='showAdvancedOptions' data-domain='{$domain}' data-user-tfa='" . $has2fa . "' role='button' class='btn btn-default'>More Options</a></li>" . $verifyphone_link . $random . "</ul></div></section>";
$login_output .= "<div id='login_block'>";
$alt_forms = "<div id='alt_logins'>\n<!-- OpenID, Google, Twitter, Facebook -->\n</div>";
$login_preamble = "\n\t    <h2 id='title'>User Login</h2>";
if ($_REQUEST['m'] == 'login_error') {
function getLoginState($get, $default = false)
{
    global $login_url;
    $conf = $get['hash'];
    $s = $get['secret'];
    $id = $get['dblink'];
    $u = new UserFunctions();
    $userDetail = $u->validateUser($id, $conf, $s, true);
    $loginStatus = $userDetail['status'];
    try {
        unset($userDetail['userdata']['password']);
        unset($userDetail['userdata']['secret']);
        unset($userDetail['userdata']['pass_meta']);
        unset($userDetail['userdata']['secdata']);
        unset($userDetail['userdata']['emergency_code']);
        unset($userDetail['userdata']['auth_key']);
        unset($userDetail['userdata']['data']);
        unset($userDetail['userdata']['private_key']);
        unset($userDetail['userdata']['random_seed']);
        unset($userDetail['userdata']['special_1']);
        unset($userDetail['userdata']['special_2']);
        unset($userDetail['userdata']['app_key']);
        unset($userDetail['userdata']['phone_verified']);
        unset($userDetail['userdata']['last_ip']);
        unset($userDetail['source']);
        unset($userDetail['salt']);
        unset($userDetail['calc_conf']);
        unset($userDetail['basis_conf']);
        unset($userDetail['iv']);
    } catch (Exception $e) {
        # Do nothing, that unset just failed
        $userDetail = $e->getMessage();
    }
    $response = array('status' => $loginStatus, 'defaulted' => $default, 'login_url' => $login_url, 'detail' => $userDetail, "unrestricted" => $u->meetsRestrictionCriteria(), "has_alternate" => $u->hasAlternateEmail(), "email_allowed" => $u->emailIsAllowed(), "alternate_allowed" => $u->alternateIsAllowed(), "restriction_criteria" => $u->getRestrictionCriteria());
    if ($default) {
        $response["provided_arguments"] = $_REQUEST;
    }
    return $response;
}