Example #1
0
function SSO_ActivateUser($id, $entropy, $info, $created = false, $automate = false, $activatesession = true)
{
    global $sso_rng, $sso_db, $sso_db_users, $sso_db_user_tags, $sso_db_tags, $sso_provider, $sso_ipaddr, $sso_settings;
    try {
        // Create or update the user.
        $row = $sso_db->GetRow("SELECT", array("*", "FROM" => "?", "WHERE" => "provider_name = ? AND provider_id = ?"), $sso_db_users, $sso_provider, $id);
        if ($row) {
            // Check for the account locked tag.
            if (SSO_IsLockedUser($row->id)) {
                return false;
            }
            $info2 = SSO_LoadDecryptedUserInfo($row);
            SSO_AddGeoIPMapFields($info2);
            foreach ($info as $key => $val) {
                $info2[$key] = $val;
            }
            $info3 = SSO_CreateEncryptedUserInfo($info2);
            $sso_db->Query("UPDATE", array($sso_db_users, array("lastipaddr" => $sso_ipaddr["ipv6"], "lastactivated" => CSDB::ConvertToDBTime(time()), "info" => serialize($info2), "info2" => $info3), "WHERE" => "id = ?"), $row->id);
        } else {
            $extra = $sso_rng->GenerateString(64);
            $info2 = array();
            SSO_AddGeoIPMapFields($info2);
            if (isset($sso_settings[""]["first_activated_map"]) && SSO_IsField($sso_settings[""]["first_activated_map"])) {
                $info2[$sso_settings[""]["first_activated_map"]] = CSDB::ConvertToDBTime(time());
            }
            if (isset($sso_settings[""]["created_map"]) && SSO_IsField($sso_settings[""]["created_map"])) {
                $info2[$sso_settings[""]["created_map"]] = CSDB::ConvertToDBTime($created !== false ? $created : time());
            }
            foreach ($info as $key => $val) {
                $info2[$key] = $val;
            }
            $info3 = SSO_CreateEncryptedUserInfo($info2);
            $sso_db->Query("INSERT", array($sso_db_users, array("provider_name" => $sso_provider, "provider_id" => $id, "session_extra" => $extra, "version" => 0, "lastipaddr" => $sso_ipaddr["ipv6"], "lastactivated" => CSDB::ConvertToDBTime(time()), "info" => serialize($info2), "info2" => $info3)));
            $row = $sso_db->GetRow("SELECT", array("*", "FROM" => "?", "WHERE" => "provider_name = ? AND provider_id = ?"), $sso_db_users, $sso_provider, $id);
        }
        if ($activatesession) {
            SSO_ActivateUserSession($row, $automate);
        }
    } catch (Exception $e) {
        // Don't do anything here.  Just catch the database exception and let the code fall through.
        // It should be nearly impossible to get here in the first place.
    }
    return false;
}
Example #2
0
 }
 $sso_session_info2 = unserialize($sso_sessionrow2->info);
 if ($sso_session_info2["validated"]) {
     SSO_DisplayError("The new session ID is already validated.");
 }
 $sso_automate = $sso_session_info2["automate"];
 $sso_userrow = $sso_db->GetRow("SELECT", array("*", "FROM" => "?", "WHERE" => "id = ?"), $sso_db_users, $sso_sessionrow2->user_id);
 if ($sso_userrow === false) {
     SSO_DisplayError("The new session ID maps to an invalid user.  Most likely cause:  Internal error.");
 }
 $sso_provider = $sso_userrow->provider_name;
 if (!isset($sso_providers[$sso_provider])) {
     SSO_DisplayError("The session ID maps to an invalid provider.");
 }
 $sso_protectedfields = $sso_providers[$sso_provider]->GetProtectedFields();
 $sso_user_info = SSO_LoadDecryptedUserInfo($sso_userrow);
 // Load API key field mapping.
 $sso_missingfields = array();
 foreach ($sso_apikey_info["field_map"] as $key => $info) {
     if (!isset($sso_user_info[$key]) && (!isset($sso_protectedfields[$key]) || !$sso_protectedfields[$key])) {
         $sso_missingfields[$key] = $key;
     }
 }
 $sso_target_url = SSO_ROOT_URL . "/" . $sso_indexphp . "?sso_action=sso_validate" . (isset($_REQUEST["lang"]) ? "&lang=" . urlencode($_REQUEST["lang"]) : "");
 // A developer can optionally hook into the SSO server here.
 // The "version" of the user account is checked and the user updates their account prior to continuing.
 if (file_exists(SSO_ROOT_PATH . "/index_hook.php")) {
     require_once SSO_ROOT_PATH . "/index_hook.php";
 } else {
     SSO_ValidateUser();
     SSO_DisplayError("Unable to validate the new session.  Most likely cause:  Internal error.");
Example #3
0
 }
 if (!count($optdesc)) {
     $optdesc[] = BB_Translate("Latest Accounts");
 }
 $desc = "<ul><li>" . implode("</li><li>", $optdesc) . "</li></ul>";
 SSO_LoadFieldSearchOrder();
 $rows = array();
 $sqlopts = array("u.*", "FROM" => implode(", ", $sqlfrom), "LIMIT" => "300");
 if (count($sqlwhere)) {
     $sqlopts["WHERE"] = implode(" AND ", $sqlwhere);
 } else {
     $sqlopts["ORDER BY"] = "u.id DESC";
 }
 $result = $sso_db->Query("SELECT", $sqlopts, $sqlvars);
 while ($row = $result->NextRow()) {
     $userinfo = SSO_LoadDecryptedUserInfo($row);
     $user = "";
     foreach ($sso_settings[""]["search_order"] as $key => $display) {
         $desc2 = false;
         $val = false;
         if ($key === "id") {
             $desc2 = "Account ID";
             $val = $row->id;
         } else {
             if ($key === "provider_name") {
                 $desc2 = "Provider Name";
                 $val = $row->provider_name . (isset($sso_providers[$row->provider_name]) ? " - " . $sso_providers[$row->provider_name]->DisplayName() : "");
             } else {
                 if ($key === "provider_id") {
                     $desc2 = "Provider ID";
                     $val = $row->provider_id;