/**
  * 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"));
 }