From 9362a78a880419ba521b908a69ff02af005c5ec4 Mon Sep 17 00:00:00 2001 From: luke-rt Date: Sun, 10 Nov 2024 13:18:23 -0500 Subject: [PATCH] JWT tokens working with oidc somewhat working --- .../app/(header)/(auth)/layout.tsx | 22 ++++++++++++ .../app/(header)/(auth)/review/page.tsx | 35 +++++++++++++++++++ .../app/(header)/review/page.tsx | 8 ----- frontend/review-nextjs/app/layout.tsx | 16 ++------- .../review-nextjs/components/Skeleton.tsx | 7 ++++ frontend/review-nextjs/lib/api.ts | 17 +++------ frontend/review-nextjs/lib/auth.ts | 23 ++++++++++++ frontend/review-nextjs/middleware.ts | 22 ------------ 8 files changed, 95 insertions(+), 55 deletions(-) create mode 100644 frontend/review-nextjs/app/(header)/(auth)/layout.tsx create mode 100644 frontend/review-nextjs/app/(header)/(auth)/review/page.tsx delete mode 100644 frontend/review-nextjs/app/(header)/review/page.tsx create mode 100644 frontend/review-nextjs/components/Skeleton.tsx create mode 100644 frontend/review-nextjs/lib/auth.ts delete mode 100644 frontend/review-nextjs/middleware.ts diff --git a/frontend/review-nextjs/app/(header)/(auth)/layout.tsx b/frontend/review-nextjs/app/(header)/(auth)/layout.tsx new file mode 100644 index 00000000..8e8549bc --- /dev/null +++ b/frontend/review-nextjs/app/(header)/(auth)/layout.tsx @@ -0,0 +1,22 @@ +"use client"; +import Skeleton from "@/components/Skeleton"; +import { userManager } from "@/lib/auth"; +import { useEffect } from "react"; +import { AuthProvider, AuthProviderProps, useAuth } from "react-oidc-context"; +import { permanentRedirect } from "next/navigation"; + +const config = { + userManager, + onSigninCallback: (user) => { + console.log(user); + permanentRedirect("/review"); + }, +} satisfies AuthProviderProps; + +export default function AuthLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return {children}; +} diff --git a/frontend/review-nextjs/app/(header)/(auth)/review/page.tsx b/frontend/review-nextjs/app/(header)/(auth)/review/page.tsx new file mode 100644 index 00000000..7acc665f --- /dev/null +++ b/frontend/review-nextjs/app/(header)/(auth)/review/page.tsx @@ -0,0 +1,35 @@ +"use client"; +import Skeleton from "@/components/Skeleton"; +import { cn } from "@/lib/utils"; +import { useEffect } from "react"; +import { useAuth } from "react-oidc-context"; + +/* +On error with fetching data +try { + userManager.signinSilent() +} catch (error) { + userManager.signinRedirect() +} +*/ + +export default function Review() { + const auth = useAuth(); + + return ( +
+ {auth.isLoading ? : } +
+ ); +} + +function ReviewPage() { + const auth = useAuth(); + + return ( +

+ Secret data that needs authentication {auth.isAuthenticated}{" "} + {auth.user?.profile.email} +

+ ); +} diff --git a/frontend/review-nextjs/app/(header)/review/page.tsx b/frontend/review-nextjs/app/(header)/review/page.tsx deleted file mode 100644 index 1051c6ad..00000000 --- a/frontend/review-nextjs/app/(header)/review/page.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { cn } from "@/lib/utils"; -export default function Review() { - return ( -
- Secret review data -
- ); -} diff --git a/frontend/review-nextjs/app/layout.tsx b/frontend/review-nextjs/app/layout.tsx index 42b707b9..edc23450 100644 --- a/frontend/review-nextjs/app/layout.tsx +++ b/frontend/review-nextjs/app/layout.tsx @@ -1,21 +1,13 @@ import type { Metadata } from "next"; import "./globals.css"; import { cn } from "@/lib/utils"; -import { AuthProvider } from "react-oidc-context"; -import Footer from "../components/Footer"; +import Footer from "@/components/Footer"; export const metadata: Metadata = { title: "Penn Course Review", description: "Made by Penn Labs", }; -const oidcConfig = { - authority: "", - clientId: "", - redirectUri: "", - // ... -}; - export default function RootLayout({ children, }: Readonly<{ @@ -24,10 +16,8 @@ export default function RootLayout({ return ( - - {children} -