From 348dc080fd8f83c7a05306d9756e3a778d78b466 Mon Sep 17 00:00:00 2001 From: Oscar Eriksson Date: Fri, 27 Sep 2024 20:49:27 +0200 Subject: [PATCH] Fix oauth_state cookie in frontend --- frontend/src/app/page.tsx | 35 +++++++++++++++++++++---------- frontend/src/lib/goldapps/auth.ts | 2 ++ 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/frontend/src/app/page.tsx b/frontend/src/app/page.tsx index 9429664..af0469f 100644 --- a/frontend/src/app/page.tsx +++ b/frontend/src/app/page.tsx @@ -1,20 +1,33 @@ +'use client'; + import { Suggestions } from "../components/Suggestions"; import { checkLogin } from "../lib/goldapps/auth"; -import { redirect } from "next/navigation"; +import { useRouter } from "next/navigation"; import { getSuggestions } from "../lib/goldapps/get-suggestions"; -import { createGoldappsServerClient } from "../lib/goldapps/client-server"; +import {useEffect, useState} from "react"; +import {Suggestion} from "../lib/goldapps/types"; +import {createGoldappsBrowserClient} from "../lib/goldapps/client-browser"; -async function fetchSuggestions() { - const goldappsClient = createGoldappsServerClient(); - const redirectUri = await checkLogin(goldappsClient); - if (redirectUri) { - return redirect(redirectUri); - } - return getSuggestions(goldappsClient); -} export default async function IndexPage() { - const suggestions = await fetchSuggestions(); + + const router = useRouter(); + const fetchSuggestions = async () => { + const goldappsClient = createGoldappsBrowserClient(); + const redirectUri = await checkLogin(goldappsClient); + if (redirectUri) { + return router.push(redirectUri); + } + + return getSuggestions(goldappsClient); + } + + const [suggestions, setSuggestions] = useState([]); + useEffect(() => { + fetchSuggestions().then((suggestions) => { + setSuggestions(suggestions || []); + }); + }, []); return ; } diff --git a/frontend/src/lib/goldapps/auth.ts b/frontend/src/lib/goldapps/auth.ts index beb0b46..51be55d 100644 --- a/frontend/src/lib/goldapps/auth.ts +++ b/frontend/src/lib/goldapps/auth.ts @@ -1,4 +1,5 @@ import { AxiosInstance, AxiosResponse } from "axios"; +import { cookies } from "next/headers"; // Returns login uri if not logged in export async function checkLogin(client: AxiosInstance) { @@ -13,6 +14,7 @@ export async function checkLogin(client: AxiosInstance) { return null; } catch (e) { const response = (e as any).response as AxiosResponse; + return response.data; } }