/** * Login the user with the supplied token + userid + ip * * @param Request $request * @return Response */ public function serverlogin(Request $request) { $token = $request->input("token"); $userid = intval($request->input("userid")); $page = $request->input("page"); $game = $request->input("game"); $clientip = $request->getClientIp(); //Validate input if (!isset($token) || !isset($userid)) { Log::debug("No token or userid has been provided"); abort(400); } //GET the user from the db try { $user = StoreUser::findOrFail($userid); } catch (\Exception $e) { Log::notice("User does not exist in db", ["userid" => $userid]); abort(401); } //Check if the token matches if ($user->token != $token || $user->token == NULL || $user->token == "") { Log::notice("Invalid Token", ["token" => $user->token, "provided_token" => $token]); abort(401); } //Check if the ip matches if (!\Config::get('userpanel.serverlogin_ignore_ipmismatch') && ($user->ip != $clientip || $user->ip == NULL || $user->ip == "")) { Log::notice("Invalid User IP", ["ip" => $user->ip, "provided_ip" => $clientip]); abort(401); } //Check if the session variable already exists if ($request->session()->has("store_user_id")) { Log::debug("Session with store_user_id already exists"); //TODO: Handle the case that the store_user_id already exists } //Set the session variable $request->session()->put('store_user_authmethod', 'server_token'); $request->session()->put('store_user_id', $user->id); $request->session()->put('store_user_name', $user->name); $request->session()->put('store_user_auth', $user->auth); Log::info("User logged in", ["user_id" => $user->id, "user_name" => $user->name]); //GAME: CSGO if ($game == "csgo") { Log::debug("User is on CSGO", ["user_id" => $user->id, "user_name" => $user->name, "page" => $page]); $data = array(); switch ($page) { case "item_buy": $data["namedroute"] = "userpanel.useritems.buyoverview"; $data["title"] = "Store UserPanel"; break; case "inventory": $data["namedroute"] = "userpanel.useritems.index"; $data["title"] = "Store UserPanel"; break; case "loadouts": $data["namedroute"] = "userpanel.loadouts.index"; $data["title"] = "Store UserPanel"; break; case "dashboard": $data["namedroute"] = "userpanel.dashboard"; $data["title"] = "Store UserPanel"; break; default: $data["namedroute"] = "userpanel.dashboard"; $data["title"] = "Store UserPanel"; } return view('templates.' . \Config::get('userpanel.template') . 'userpanel.csgoredirector', $data); } else { Log::debug("User is not on CSGO", ["user_id" => $user->id, "user_name" => $user->name, "page" => $page]); if (!isset($page) || !isset($page)) { return redirect()->route('userpanel.dashboard'); } switch ($page) { case "item_buy": return redirect()->route('userpanel.useritems.buyoverview'); break; case "inventory": return redirect()->route('userpanel.useritems.index'); break; case "loadouts": return redirect()->route('userpanel.loadouts.index'); break; case "dashboard": return redirect()->route('userpanel.dashboard'); break; default: return redirect()->route('userpanel.dashboard'); break; } } }
/** * Sets the loadout as primary loadout * * @param $loadout */ public function postSelect($loadout) { $user = StoreUser::findOrFail(Session::get('store_user_id', 0)); $user->eqp_loadout_id = $loadout->id; $user->save(); //redirect back to loadout edit page with success message return redirect()->route("userpanel.loadouts.view", ["loadout" => $loadout->id])->with("flash_notification", array("message" => "The selected loadout has been set as your equipped loadout", "level" => "success")); }