From 5e10df93b166d4dddc5128cc84117c863ccbaba8 Mon Sep 17 00:00:00 2001 From: stephen Date: Tue, 6 Jan 2026 15:37:45 +1100 Subject: [PATCH] working MS authentication --- src/app/layout.tsx | 21 +++++++++++++----- src/app/layout.tsx-bak | 32 +++++++++++++++++++++++++++ src/app/profile/page.tsx | 39 ++++++++++++++++++++++++++++----- src/components/LogoutButton.tsx | 15 +++++++++++++ src/components/navbar/index.tsx | 33 ++++++++++++++++++++++++++++ 5 files changed, 128 insertions(+), 12 deletions(-) create mode 100644 src/app/layout.tsx-bak create mode 100644 src/components/LogoutButton.tsx create mode 100644 src/components/navbar/index.tsx diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 42fc323..1cafa6c 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,6 +1,9 @@ import type { Metadata } from "next"; import { Geist, Geist_Mono } from "next/font/google"; import "./globals.css"; +import Navbar from "@/components/navbar"; +import { auth } from "@/auth"; +import { SessionProvider } from "next-auth/react"; const geistSans = Geist({ variable: "--font-geist-sans", @@ -17,16 +20,22 @@ export const metadata: Metadata = { description: "Generated by create next app", }; -export default function RootLayout({ +export default async function RootLayout({ children, }: Readonly<{ children: React.ReactNode; }>) { + const session = await auth(); return ( - - - {children} - - + + + + +
{children}
+ + +
); } diff --git a/src/app/layout.tsx-bak b/src/app/layout.tsx-bak new file mode 100644 index 0000000..42fc323 --- /dev/null +++ b/src/app/layout.tsx-bak @@ -0,0 +1,32 @@ +import type { Metadata } from "next"; +import { Geist, Geist_Mono } from "next/font/google"; +import "./globals.css"; + +const geistSans = Geist({ + variable: "--font-geist-sans", + subsets: ["latin"], +}); + +const geistMono = Geist_Mono({ + variable: "--font-geist-mono", + subsets: ["latin"], +}); + +export const metadata: Metadata = { + title: "Create Next App", + description: "Generated by create next app", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + {children} + + + ); +} diff --git a/src/app/profile/page.tsx b/src/app/profile/page.tsx index 14d73ef..c80835b 100644 --- a/src/app/profile/page.tsx +++ b/src/app/profile/page.tsx @@ -1,12 +1,39 @@ +import { auth } from "@/auth"; +import LogoutButton from "@/components/LogoutButton"; +import Image from "next/image"; +// import { getServerSession } from "next-auth/next" -function Profile -() { +async function Profile() { + const session = await auth(); + + console.log(session) + //console.trace(session) return ( -
- Profile +
+
+ {session?.user?.image ? ( + {session?.user?.name + ) : ( +
+ {session?.user?.name?.charAt(0).toUpperCase()} + {session?.user?.name?.split(" ")[1]?.charAt(0).toUpperCase()} +
+ )} +
+

{session?.user?.name}

+

{session?.user?.email}

+
+ +
- ) + ); } -export default Profile +export default Profile; diff --git a/src/components/LogoutButton.tsx b/src/components/LogoutButton.tsx new file mode 100644 index 0000000..bfc76b0 --- /dev/null +++ b/src/components/LogoutButton.tsx @@ -0,0 +1,15 @@ +"use client"; +import { signOut } from "next-auth/react"; + +function LogoutButton() { + return ( + + ); +} + +export default LogoutButton; diff --git a/src/components/navbar/index.tsx b/src/components/navbar/index.tsx new file mode 100644 index 0000000..7f03d47 --- /dev/null +++ b/src/components/navbar/index.tsx @@ -0,0 +1,33 @@ +import { auth } from "@/auth"; +import Link from "next/link"; + +async function Navbar() { + const session = await auth(); + return ( + + ); +} + +export default Navbar;