From 8577b0aca91457595531d42681c03d79d83a1cc3 Mon Sep 17 00:00:00 2001 From: xander <63683502+xander113@users.noreply.github.com> Date: Sat, 5 Mar 2022 16:55:02 -1200 Subject: [PATCH] not finished yet note for me: get auth token system finished. --- .../Controllers/Auth/RegisterController.php | 10 +++++++++- web/app/Http/Controllers/BannerController.php | 1 + web/app/Http/Controllers/Controller.php | 9 ++++----- web/app/Http/Kernel.php | 1 + web/app/Models/User.php | 2 ++ .../2021_12_16_011849_create_users_table.php | 1 + web/resources/js/components/Main.js | 2 +- web/resources/js/helpers/Auth.js | 4 ++-- web/resources/js/helpers/utils.js | 8 +++----- web/resources/js/layouts/App.js | 20 ++++++++++++------- web/resources/js/pages/Auth/Login.js | 5 +++-- web/resources/js/pages/Auth/Register.js | 5 +++-- web/resources/js/pages/Home.js | 1 + web/routes/apis.php | 11 ++++++++++ web/routes/web.php | 2 +- 15 files changed, 56 insertions(+), 26 deletions(-) diff --git a/web/app/Http/Controllers/Auth/RegisterController.php b/web/app/Http/Controllers/Auth/RegisterController.php index 71e2390..3a31f78 100644 --- a/web/app/Http/Controllers/Auth/RegisterController.php +++ b/web/app/Http/Controllers/Auth/RegisterController.php @@ -84,16 +84,24 @@ class RegisterController extends Controller $messages = $valid->messages()->get('*'); return Response()->json(['message'=>$error, 'badInputs'=>[array_keys($messages)]]); } + + $prws = array_merge(range('a', 'z'), range('A', 'Z'), range(0, 8)); + shuffle($prws); + $sc = substr(implode($prws), 0, 56); $user = new User; $user->username = $data['username']; $user->email = $data['email']; $user->password = Hash::make($data['password']); + $user->token = $sc; $user->save(); - Auth::login($user); Request::session()->regenerate(); + Auth::login($user); + + setcookie('gtok', $sc, time()+(345600*30), "/"); + return Response()->json('good'); } diff --git a/web/app/Http/Controllers/BannerController.php b/web/app/Http/Controllers/BannerController.php index a610bc4..c04537a 100644 --- a/web/app/Http/Controllers/BannerController.php +++ b/web/app/Http/Controllers/BannerController.php @@ -39,4 +39,5 @@ class BannerController extends Controller return response($content) ->header('Content-Type', 'application/json'); } + } diff --git a/web/app/Http/Controllers/Controller.php b/web/app/Http/Controllers/Controller.php index 9c7b097..38d7022 100644 --- a/web/app/Http/Controllers/Controller.php +++ b/web/app/Http/Controllers/Controller.php @@ -19,11 +19,6 @@ class Controller extends BaseController { use AuthorizesRequests, DispatchesJobs, ValidatesRequests; - public function __construct() - { - $this->middleware('guest'); - } - public function login(Request $request) { $data = Request::all(); @@ -42,6 +37,8 @@ class Controller extends BaseController if (!User::where('username', Request::input('username'))->first()) { return Response()->json(['message'=>"Sorry, that user wasn't found!", 'badInputs'=>['username']]); } + + $user = User::where('username', Request::input('username'))->first(); if (!Auth::attempt(Request::only('username', 'password'))) { return Response()->json(['message'=>'Sorry, thats the wrong password!', 'badInputs'=>['password']]); @@ -49,6 +46,8 @@ class Controller extends BaseController Request::session()->regenerate(); + Auth::login($user); + return Response()->json('good'); } diff --git a/web/app/Http/Kernel.php b/web/app/Http/Kernel.php index 7bc9cf6..1f5007a 100644 --- a/web/app/Http/Kernel.php +++ b/web/app/Http/Kernel.php @@ -20,6 +20,7 @@ class Kernel extends HttpKernel \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, + \Illuminate\Session\Middleware\StartSession::class ]; /** diff --git a/web/app/Models/User.php b/web/app/Models/User.php index e23e090..622c401 100644 --- a/web/app/Models/User.php +++ b/web/app/Models/User.php @@ -31,6 +31,8 @@ class User extends Authenticatable protected $hidden = [ 'password', 'remember_token', + 'token', + 'email' ]; /** diff --git a/web/database/migrations/2021_12_16_011849_create_users_table.php b/web/database/migrations/2021_12_16_011849_create_users_table.php index 2a34f16..b0c7821 100644 --- a/web/database/migrations/2021_12_16_011849_create_users_table.php +++ b/web/database/migrations/2021_12_16_011849_create_users_table.php @@ -19,6 +19,7 @@ class CreateUsersTable extends Migration $table->string('email'); $table->timestamp('email_verified_at')->default(null); $table->string('password'); + $table->string('token'); $table->timestamps(); }); } diff --git a/web/resources/js/components/Main.js b/web/resources/js/components/Main.js index 8f33c07..4829c4c 100644 --- a/web/resources/js/components/Main.js +++ b/web/resources/js/components/Main.js @@ -2,7 +2,7 @@ import 'bootstrap'; import React from 'react'; import ReactDOM from 'react-dom'; - +import { useState, useEffect } from "react"; import App from '../layouts/App.js'; function Main() { diff --git a/web/resources/js/helpers/Auth.js b/web/resources/js/helpers/Auth.js index 7ece9a8..4eaa830 100644 --- a/web/resources/js/helpers/Auth.js +++ b/web/resources/js/helpers/Auth.js @@ -16,7 +16,7 @@ export function CreateAccount(form) var badInputs = []; return new Promise(async (resolve, reject)=>{ - await axios.post(`${protocol}apis.${url}/account/register`, body, {headers: {'X-CSRF-TOKEN': document.querySelector(`meta[name="csrf-token"]`).content}}).then(data=>{ + await axios.post(`${protocol}apis.${url}/account/register`, body, {headers: {'X-CSRF-TOKEN': document.querySelector(`meta[name="csrf-token"]`).content, "X-Requested-With":"XMLHttpRequest"}}).then(data=>{ const res = data.data; if (res.badInputs.length >= 1) { badInputs=res.badInputs; @@ -35,7 +35,7 @@ export function LoginToAccount(form) { return new Promise(async (resolve, reject)=>{ - await axios.post(`${protocol}apis.${url}/account/login`, body, {headers: {'X-CSRF-TOKEN': document.querySelector(`meta[name="csrf-token"]`).content}}).then(data=>{ + await axios.post(`${protocol}apis.${url}/account/login`, body, {headers: {'X-CSRF-TOKEN': document.querySelector(`meta[name="csrf-token"]`).content, "X-Requested-With":"XMLHttpRequest"}}).then(data=>{ const res = data.data; if (res.badInputs.length >= 1) { badInputs=res.badInputs; diff --git a/web/resources/js/helpers/utils.js b/web/resources/js/helpers/utils.js index 2de2093..ff8de72 100644 --- a/web/resources/js/helpers/utils.js +++ b/web/resources/js/helpers/utils.js @@ -3,7 +3,9 @@ import { useEffect } from 'react'; -function useOnClickOutside(refs, handler) { +export var user; + +export function useOnClickOutside(refs, handler) { useEffect( () => { const listener = (event) => { @@ -36,7 +38,3 @@ function useOnClickOutside(refs, handler) { [refs, handler] ); } - -export { - useOnClickOutside -}; \ No newline at end of file diff --git a/web/resources/js/layouts/App.js b/web/resources/js/layouts/App.js index ce26d4e..64a4aae 100644 --- a/web/resources/js/layouts/App.js +++ b/web/resources/js/layouts/App.js @@ -34,7 +34,8 @@ var protocol = Config.Protocol; const App = () => { - const [state, setState] = useState({maintenance: false, theme: 0, banners: [], offlineFetch: false}); + const [state, setState] = useState({maintenance: false, theme: 0, banners: [], offlineFetch: false, user: []}); + var finished = false; function updateBanners() { @@ -47,6 +48,12 @@ const App = () => { setState({banners: result}); }); } + + function fetchUser() { + axios.post(`${protocol}apis.${url}/fetch/user`).then((res)=>{ + setState({user: res.data.data}, (e)=>{console.log(state.user)}); + }); + } function updateOfflineStatus() { @@ -67,13 +74,12 @@ const App = () => { }); } - useEffect(()=>{ - + useEffect(async ()=>{ + await fetchUser(); updateBanners(); updateOfflineStatus(); setInterval(updateBanners, 2*60*1000 /* 2 mins */); setInterval(updateOfflineStatus, 10*60*1000 /* 10 mins */); - console.log(state); }, []); document.documentElement.classList.add(state.theme == 0 ? 'gtoria-light' : 'gtoria-dark'); @@ -103,13 +109,13 @@ const App = () => { - + {state.user? : } - + {state.user? : } - + {state.user? : } diff --git a/web/resources/js/pages/Auth/Login.js b/web/resources/js/pages/Auth/Login.js index 63a76d6..8e03cd5 100644 --- a/web/resources/js/pages/Auth/Login.js +++ b/web/resources/js/pages/Auth/Login.js @@ -21,9 +21,10 @@ const LoginForm = (props) => { if (res != `good`) { setValidity({error: true, message:res.message, inputs: res.inputs}); setTimeout(()=>{setValidity({...validity, error: false, inputs: res.inputs});}, 4000); + }else{ + window.history.pushState(`/home`); + return; } - window.history.pushState(`/home`); - return; }).catch(error=>console.log(error)); setWaitingForSubmission(false); } diff --git a/web/resources/js/pages/Auth/Register.js b/web/resources/js/pages/Auth/Register.js index bbfbe15..2b4cb48 100644 --- a/web/resources/js/pages/Auth/Register.js +++ b/web/resources/js/pages/Auth/Register.js @@ -45,9 +45,10 @@ const RegisterForm = (props) => { if (res != `good`) { setValidity({error: true, message:res.message, inputs: res.inputs}); setTimeout(()=>{setValidity({...validity, error: false, inputs: res.inputs});}, 4000); + }else{ + window.history.pushState(`/home`); + return; } - window.history.pushState(`/home`); - return; }).catch(error=>console.log(error)); setWaitingForSubmission(false); } diff --git a/web/resources/js/pages/Home.js b/web/resources/js/pages/Home.js index 9b5cb16..09db713 100644 --- a/web/resources/js/pages/Home.js +++ b/web/resources/js/pages/Home.js @@ -7,6 +7,7 @@ import { Link } from "react-router-dom"; import SetTitle from "../Helpers/Title.js"; import SocialCard from "../Components/Landing/SocialCard.js"; +import { user } from "../helpers/utils.js"; const Home = () => { useEffect(()=>{ diff --git a/web/routes/apis.php b/web/routes/apis.php index 37f0ddb..eff89ef 100644 --- a/web/routes/apis.php +++ b/web/routes/apis.php @@ -6,6 +6,7 @@ use App\Http\Controllers\BannerController; use App\Http\Controllers\GamesController; use App\Http\Controllers\Controller; use App\Http\Controllers\Auth\RegisterController; +use App\Models\User; /* |-------------------------------------------------------------------------- @@ -26,6 +27,16 @@ 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('/maintenance/bypass', 'MaintenanceController@bypass'); Route::post('/account/register', 'Auth\RegisterController@create'); diff --git a/web/routes/web.php b/web/routes/web.php index 68442af..36bdf6e 100644 --- a/web/routes/web.php +++ b/web/routes/web.php @@ -15,7 +15,7 @@ use Illuminate\Support\Facades\Route; Route::get('/javascript', function(){ return view('javascript'); -}); +})->middleware('auth'); Route::get('/', function(){ return view('main');