From 3ecac98d44e4ff6283f358c283a20528704a8bf2 Mon Sep 17 00:00:00 2001 From: xander <63683502+xander113@users.noreply.github.com> Date: Tue, 8 Mar 2022 01:26:50 -1200 Subject: [PATCH] php not seatting cookie naeanwaaefnasefnasefnf --- web/app/Http/Controllers/Controller.php | 19 +++++++++++++ web/resources/js/helpers/utils.js | 36 +++++++++++++++++++++++++ web/resources/js/layouts/App.js | 23 ++++++++++------ web/resources/js/pages/Auth.js | 2 ++ web/routes/apis.php | 10 +------ 5 files changed, 73 insertions(+), 17 deletions(-) diff --git a/web/app/Http/Controllers/Controller.php b/web/app/Http/Controllers/Controller.php index 38d7022..9a36c08 100644 --- a/web/app/Http/Controllers/Controller.php +++ b/web/app/Http/Controllers/Controller.php @@ -19,6 +19,23 @@ class Controller extends BaseController { use AuthorizesRequests, DispatchesJobs, ValidatesRequests; + public function fetchUser() { + $POST; + + if (!isset($_POST['token'])) {return Response()->json(false);} + + $POST = $_POST['token']; + $user = User::where('token', $POST)->first(); + + if (!$user) {return Response()->json(false);} + + $array = $user->toArray(); + + if (!$user) {return Response()->json(false);} + + return Response()->json(["data"=>$array]); + } + public function login(Request $request) { $data = Request::all(); @@ -46,6 +63,8 @@ class Controller extends BaseController Request::session()->regenerate(); + setcookie('gtok', $user->token, time()+(345600*30), "/"); + Auth::login($user); return Response()->json('good'); diff --git a/web/resources/js/helpers/utils.js b/web/resources/js/helpers/utils.js index ff8de72..f02ceb8 100644 --- a/web/resources/js/helpers/utils.js +++ b/web/resources/js/helpers/utils.js @@ -5,6 +5,42 @@ import { useEffect } from 'react'; export var user; +/* Cookie functions stolen from https://www.w3schools.com/js/js_cookies.asp | couldn't be asked tbh. */ + +export function setCookie(cname, cvalue, exdays) { + const d = new Date(); + d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); + let expires = "expires="+d.toUTCString(); + document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; +} + +export function getCookie(cname) { + let name = cname + "="; + let ca = document.cookie.split(';'); + for(let i = 0; i < ca.length; i++) { + let c = ca[i]; + while (c.charAt(0) == ' ') { + c = c.substring(1); + } + if (c.indexOf(name) == 0) { + return c.substring(name.length, c.length); + } + } + return ""; +} + +export function checkCookie() { + let user = getCookie("username"); + if (user != "") { + alert("Welcome again " + user); + } else { + user = prompt("Please enter your name:", ""); + if (user != "" && user != null) { + setCookie("username", user, 365); + } + } +} + export function useOnClickOutside(refs, handler) { useEffect( () => { diff --git a/web/resources/js/layouts/App.js b/web/resources/js/layouts/App.js index 64a4aae..9558a92 100644 --- a/web/resources/js/layouts/App.js +++ b/web/resources/js/layouts/App.js @@ -26,6 +26,7 @@ import { About } from '../Pages/Legal/About.js'; import { Copyright } from '../Pages/Legal/Copyright.js'; import { Privacy } from '../Pages/Legal/Privacy.js'; import { Terms } from '../Pages/Legal/Terms.js'; +import { getCookie } from '../helpers/utils.js'; axios.defaults.withCredentials = true @@ -34,8 +35,8 @@ var protocol = Config.Protocol; const App = () => { - const [state, setState] = useState({maintenance: false, theme: 0, banners: [], offlineFetch: false, user: []}); - var finished = false; + const [state, setState] = useState({maintenance: false, theme: 0, banners: [], offlineFetch: false, loading: true}); + const [user, setUser] = useState([]); function updateBanners() { @@ -50,9 +51,14 @@ const App = () => { } function fetchUser() { - axios.post(`${protocol}apis.${url}/fetch/user`).then((res)=>{ - setState({user: res.data.data}, (e)=>{console.log(state.user)}); + const body = new FormData(); + body.append('token', encodeURIComponent(getCookie(`gtok`))); + axios.post(`${protocol}apis.${url}/fetch/user`, body).then((res)=>{ + setUser(res.data.data); }); + return new Promise(async (resolve, reject)=>{ + resolve("good"); + }); } function updateOfflineStatus() @@ -80,13 +86,14 @@ const App = () => { updateOfflineStatus(); setInterval(updateBanners, 2*60*1000 /* 2 mins */); setInterval(updateOfflineStatus, 10*60*1000 /* 10 mins */); + setState({loading: true}); }, []); document.documentElement.classList.add(state.theme == 0 ? 'gtoria-light' : 'gtoria-dark'); document.documentElement.classList.remove(!(state.theme == 0) ? 'gtoria-light' : 'gtoria-dark'); return ( - state.offlineFetched == true ? + !state.loading? {state.banners && state.banners.length >= 1 ? state.banners : null} @@ -109,13 +116,13 @@ const App = () => { - {state.user? : } + - {state.user? : } + - {state.user? : } + diff --git a/web/resources/js/pages/Auth.js b/web/resources/js/pages/Auth.js index c5d6ddc..f77d910 100644 --- a/web/resources/js/pages/Auth.js +++ b/web/resources/js/pages/Auth.js @@ -48,6 +48,8 @@ class Auth extends React.Component { pageContent = (); break; default: + pageLabel = (<> YOU'RE LOGGED IN!); + pageContent = (
Sorry, this page is for unauthenticated members only!
); break; } diff --git a/web/routes/apis.php b/web/routes/apis.php index eff89ef..170555f 100644 --- a/web/routes/apis.php +++ b/web/routes/apis.php @@ -27,15 +27,7 @@ Route::get('/banners/data', 'BannerController@getBanners'); Route::get('/games/metadata', 'GamesController@isAvailable'); -Route::post('/fetch/user', function(){ - $cookie; - if (!isset($_COOKIE['gtok'])) {return Response()->json(false);} - $cookie = $_COOKIE['gtok']; - $user = User::where('token', $cookie)->first(); - $array = $user->toArray(); - if (!$user) {return Response()->json(false);} - return Response()->json(["data"=>$array]); -}); +Route::post('/fetch/user', 'Controller@fetchUser'); Route::post('/maintenance/bypass', 'MaintenanceController@bypass');