From 1eaa7ff5a5dd3c2f495ea89b46e44df9dd6baf9a Mon Sep 17 00:00:00 2001 From: dunemask Date: Mon, 5 Feb 2024 03:16:53 +0000 Subject: [PATCH] [FIX] Enable Correct Production Hooks (#13) Co-authored-by: Dunemask Reviewed-on: https://gitea.dunemask.dev/elysium/minecluster/pulls/13 --- src/util/auth.js | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/src/util/auth.js b/src/util/auth.js index fe3138b..f25a6bb 100644 --- a/src/util/auth.js +++ b/src/util/auth.js @@ -1,6 +1,8 @@ -import { useState, useContext, useEffect } from "react"; -import { useSearchParams, useNavigate } from "react-router-dom"; -import SettingsContext from "@mcl/settings"; +import { useState, useEffect } from "react"; +import { useSearchParams } from "react-router-dom"; + +const tokenStorageName = "cairoAuthToken"; +const tokenQuery = "cairoAuthToken"; const verifyAuth = (authToken) => fetch("/api/auth/verify", { @@ -10,29 +12,34 @@ const verifyAuth = (authToken) => .catch(() => false); export function useCairoAuth() { - const { state: settings, updateSettings } = useContext(SettingsContext); - const [auth, setAuth] = useState(!!settings.cairoAuth); - const [searchParams] = useSearchParams(); - const nav = useNavigate(); + const [authToken, setAuthToken] = useState( + localStorage.getItem(tokenStorageName), + ); + const [auth, setAuth] = useState(false); + const [searchParams, setSearchParams] = useSearchParams(); useEffect(() => { - const webToken = searchParams.get("cairoAuthToken"); + if (!authToken) return; + verifyAuth(authToken).then((authorized) => { + if (!authorized) localStorage.removeItem(tokenStorageName); + setAuth(authorized); + }); + }, [authToken]); + + useEffect(() => { + const webToken = searchParams.get(tokenQuery); if (!webToken) return; - verifyAuth(webToken).then(setAuth); - updateSettings({ cairoAuth: webToken }); - nav("/"); + localStorage.setItem(tokenStorageName, webToken); + searchParams.delete(tokenQuery); + setAuthToken(webToken); + setSearchParams(searchParams); }, [searchParams]); - useEffect(() => { - verifyAuth(settings.cairoAuth).then(setAuth); - nav("/"); - }, [settings.cairoAuth]); - return auth; } export function getAuthTokenFromStorage() { - return JSON.parse(localStorage.getItem("settings")).cairoAuth; + return localStorage.getItem(tokenStorageName); } export function cairoAuthHeader() {