draupnir4all-web

git clone git://archive.git.mtrnord.blog/MTRNord/draupnir4all-web.git
Log | Files | Refs | README | LICENSE

commit aaae763d59bb8d8db41ab096e878290074106af1
parent 393e6adfac6f4129ddd1643c9843f188bf3eed82
Author: MTRNord <mtrnord1@gmail.com>
Date:   Tue, 29 Apr 2025 13:22:43 +0200

Ensure we store the access token locally to survive reloads of the page

Signed-off-by: MTRNord <mtrnord1@gmail.com>

Diffstat:
Msrc/contexts/session-context.tsx | 18++++++++++++++++++
1 file changed, 18 insertions(+), 0 deletions(-)

diff --git a/src/contexts/session-context.tsx b/src/contexts/session-context.tsx @@ -166,6 +166,12 @@ export function SessionProvider({ children }: { children: ReactNode }) { const userData = await response.json(); setUser(userData); + + // Persist access token and expiration in sessionStorage + sessionStorage.setItem("accessToken", accessToken); + sessionStorage.setItem("openidExpiration", expires_in.toString()); + + router.replace("/dashboard"); } catch (error) { console.error("Login failed:", error); @@ -203,6 +209,12 @@ export function SessionProvider({ children }: { children: ReactNode }) { } const userData = await response.json(); setUser(userData); + + // Persist access token and expiration in sessionStorage + sessionStorage.setItem("accessToken", accessToken); + sessionStorage.setItem("openidExpiration", expires_in.toString()); + + router.replace("/dashboard"); } catch (error) { console.error("Login failed:", error); @@ -222,6 +234,12 @@ export function SessionProvider({ children }: { children: ReactNode }) { setUser(undefined); setAccessToken(undefined); + setOpenIDExpiration(undefined); + + // Clear sessionStorage + sessionStorage.removeItem("accessToken"); + sessionStorage.removeItem("openidExpiration"); + router.push("/"); } catch (error) { console.error("Logout failed:", error);