/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $userKey = $request->input('_key'); if ($userKey && !empty($userKey)) { $user = User::where('user_key', $userKey)->first(); if (Auth::check()) { $prevuser = Auth::user(); Auth::logout(); } if ($user->exists()) { Auth::login($user); $response = $next($request); Auth::logout(); if (isset($prevuser) && isset($prevuser->id)) { Auth::login($prevuser); } return $response; } else { $response = $next($request); } if (isset($prevuser)) { Auth::login($prevuser); } return $response; } if ($request->is('api/v1/donate/ipn')) { return $next($request); } return parent::handle($request, $next); }
public function index() { $latestDonation = DonationLog::whereStatus('Completed')->leftjoin('users', 'donation_log.small_id', '=', 'users.small_id')->orderBy('donation_log.id', 'desc')->take(10)->get(['donation_log.original_amount', 'users.display_name', 'users.small_id', 'users.donation', 'users.beta', 'users.site_admin']); $latestDonationParsed = []; foreach ($latestDonation as $donation) { $latestDonationParsed[] = ['original_amount' => $donation->original_amount, 'display_name' => $donation->display_name, 'small_id' => $donation->small_id, 'steam_64_bit' => Steam::to64bit($donation->small_id), 'donation' => (int) $donation->donation, 'beta' => (int) $donation->beta, 'site_admin' => (int) $donation->site_admin]; } $latestDonation = $latestDonationParsed; $mostDonation = User::where('donation', '>', '0')->orderBy('donation', 'desc')->take(10)->get(['users.display_name', 'users.small_id', 'users.donation', 'users.beta', 'users.site_admin']); $mostDonationParsed = []; foreach ($mostDonation as $donation) { $mostDonationParsed[] = ['display_name' => $donation->display_name, 'small_id' => $donation->small_id, 'steam_64_bit' => Steam::to64bit($donation->small_id), 'donation' => (int) $donation->donation, 'beta' => (int) $donation->beta, 'site_admin' => (int) $donation->site_admin]; } $mostDonation = $mostDonationParsed; $donationPerk = DonationPerk::orderBy('amount', 'asc')->get(); $user = null; if (Auth::check()) { $user = Auth::user()->toArray(); unset($user['remember_token']); } return compact('user', 'latestDonation', 'mostDonation', 'donationPerk'); }
/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { if ($this->auth->guest()) { if ($request->ajax()) { return response('Unauthorized.', 401); } else { $thisRoute = explode('.', $request->route()->getName()); if ($thisRoute[0] == 'api') { $userKey = $request->input('_key'); if ($userKey && !empty($userKey)) { $user = User::where('user_key', $userKey)->first(); if (isset($user->id)) { return $next($request); } } return ['error' => 'forbidden']; } return redirect()->guest('auth/login'); } } return $next($request); }
private function updateUsingAPI() { /* Time to follow that great guide to updating via API above */ /* grab 'info' from web api and handle errors */ $steamAPI = new SteamAPI('info'); $steamAPI->setSmallId($this->smallId); $steamInfo = $steamAPI->run(); if ($steamAPI->error()) { return ['error' => $steamAPI->errorMessage()]; } if (!isset($steamInfo->response->players[0])) { return ['error' => 'profile_null']; } $steamInfo = $steamInfo->response->players[0]; /* grab 'ban' from web api and handle errors */ $steamAPI = new SteamAPI('ban'); $steamAPI->setSmallId($this->smallId); $steamBan = $steamAPI->run(); if ($steamAPI->error()) { return ['error' => $steamAPI->errorMessage()]; } if (!isset($steamBan->players[0])) { return ['error' => 'profile_null']; } $steamBan = $steamBan->players[0]; /* grab 'alias' from old web api but do not break on errors */ $steamAPI = new SteamAPI('alias'); $steamAPI->setSmallId($this->smallId); $steamAlias = $steamAPI->run(); if ($steamAPI->error()) { $steamAlias = []; } else { usort($steamAlias, array('VacStatus\\Steam\\Steam', 'aliasSort')); } /* Successfully passed steam's not very reliable api servers */ /* Lets hope we got the alias as well :))) */ /* Lets start up with profile table */ $profile = Profile::whereSmallId($this->smallId)->first(); if (!isset($profile->id)) { $profile = new Profile(); $profile->small_id = $this->smallId; if (isset($steamInfo->timecreated)) { $profile->profile_created = $steamInfo->timecreated; } } else { // Make sure to update if this was private and now suddenly public if (empty($profile->profile_created) && isset($steamInfo->timecreated)) { $profile->profile_created = $steamInfo->timecreated; } } $profile->display_name = $steamInfo->personaname; $profile->avatar = Steam::imgToHTTPS($steamInfo->avatarfull); $profile->avatar_thumb = Steam::imgToHTTPS($steamInfo->avatar); $profile->privacy = $steamInfo->communityvisibilitystate; $profile->alias = json_encode($steamAlias); if (!$profile->save()) { return ['error' => 'profile_save_error']; } /* Now to do profile_ban table */ $profileBan = $profile->ProfileBan; // Dont update the profile_ban if there is nothing to update // This has to do with in the future when I check for new bans to notify/email $skipProfileBan = false; $newVacBanDate = new DateTime(); $newVacBanDate->sub(new DateInterval("P{$steamBan->DaysSinceLastBan}D")); $combinedBan = (int) $steamBan->NumberOfVACBans + (int) $steamBan->NumberOfGameBans; if (!isset($profileBan->id)) { $profileBan = new ProfileBan(); $profileBan->profile_id = $profile->id; $profileBan->unban = false; } else { $skipProfileBan = $profileBan->skipProfileBanUpdate($steamBan); if ($profileBan->vac != (int) $steamBan->NumberOfVACBans + (int) $steamBan->NumberOfGameBans && $profileBan->vac_banned_on->format('Y-m-d') !== $newVacBanDate->format('Y-m-d')) { $skipProfileBan = false; $profileBan->timestamps = false; } if ($profileBan->vac > $combinedBan) { $profileBan->timestamps = false; $profileBan->unban = true; } } $profileBan->vac = $combinedBan; $profileBan->community = $steamBan->CommunityBanned; $profileBan->trade = $steamBan->EconomyBan != 'none'; $profileBan->vac_banned_on = $newVacBanDate->format('Y-m-d'); if (!$skipProfileBan) { if (!$profile->ProfileBan()->save($profileBan)) { return ['error' => 'profile_ban_save_error']; } } /* Time to do profile_old_alias */ /* Checks to make sure if there is already a same name before inserting new name */ $profileOldAlias = $profile->ProfileOldAlias()->whereProfileId($profile->id)->orderBy('id', 'desc')->get(); $currentTime = new DateTime(); if ($profileOldAlias->count() == 0) { $profileOldAlias = new ProfileOldAlias(); $profileOldAlias->profile_id = $profile->id; $profileOldAlias->seen = $currentTime->format('Y-m-d'); $profileOldAlias->seen_alias = $profile->display_name; $profileOldAlias->save(); } else { $match = false; $recent = 0; foreach ($profileOldAlias as $oldAlias) { if (!is_object($oldAlias)) { continue; } if ($oldAlias->seen_alias == $profile->display_name) { $match = true; break; } $recent = $oldAlias->compareTime($recent); } if (!$match && $recent + Steam::$UPDATE_TIME < time()) { $currentTime = new DateTime(); $newAlias = new ProfileOldAlias(); $newAlias->profile_id = $profile->id; $newAlias->seen = $currentTime->format('Y-m-d'); $newAlias->seen_alias = $profile->display_name; $profile->ProfileOldAlias()->save($newAlias); } } $profileOldAlias = $profile->ProfileOldAlias()->whereProfileId($profile->id)->orderBy('id', 'desc')->get(); /* Finished inserting / updating into the DB! */ /* Check to see if this user has an account in vacstatus */ $user = User::where('small_id', $this->smallId)->first(); /* getting the number of times checked and added */ $gettingCount = UserListProfile::whereProfileId($profile->id)->orderBy('id', 'desc')->get(); $profileTimesAdded = ['number' => $gettingCount->count(), 'time' => isset($gettingCount[0]) ? (new DateTime($gettingCount[0]->created_at))->format("M j Y") : null]; $profileCheckCache = "profile_checked_"; $currentProfileCheck = ['number' => 0, 'time' => date("M j Y", time())]; if (Cache::has($profileCheckCache . $this->smallId)) { $currentProfileCheck = Cache::get($profileCheckCache . $this->smallId); } $newProfileCheck = ['number' => $currentProfileCheck['number'] + 1, 'time' => date("M j Y", time())]; Cache::forever($profileCheckCache . $this->smallId, $newProfileCheck); /* Writing the return array for the single profile */ $steam64BitId = Steam::to64Bit($profile->small_id); $oldAliasArray = []; foreach ($profileOldAlias as $k => $oldAlias) { if ($oldAlias === true) { $oldAliasArray[] = ["newname" => $profileOldAlias->seen_alias, "timechanged" => $profileOldAlias->seen->format("M j Y")]; break; } $oldAliasArray[] = ["newname" => $oldAlias->seen_alias, "timechanged" => $oldAlias->seen->format("M j Y")]; } $return = ['id' => $profile->id, 'display_name' => $steamInfo->personaname, 'avatar' => Steam::imgToHTTPS($steamInfo->avatarfull), 'avatar_thumb' => Steam::imgToHTTPS($steamInfo->avatar), 'small_id' => $this->smallId, 'steam_64_bit' => $steam64BitId, 'steam_32_bit' => Steam::to32Bit($steam64BitId), 'profile_created' => isset($profile->profile_created) ? date("M j Y", $profile->profile_created) : "Unknown", 'privacy' => $steamInfo->communityvisibilitystate, 'alias' => Steam::friendlyAlias($steamAlias), 'created_at' => $profile->created_at->format("M j Y"), 'vac' => $combinedBan, 'vac_banned_on' => $newVacBanDate->format("M j Y"), 'community' => $steamBan->CommunityBanned, 'trade' => $steamBan->EconomyBan != 'none', 'site_admin' => (int) isset($user->id) ? $user->site_admin : 0, 'donation' => (int) isset($user->id) ? $user->donation : 0, 'beta' => (int) isset($user->id) ? $user->beta : 0, 'profile_old_alias' => $oldAliasArray, 'times_checked' => $currentProfileCheck, 'times_added' => $profileTimesAdded]; /* YAY nothing broke :D time to return the data (and update cache) */ $this->updateCache($return); return $return; }