Next auth ( Azure ) : Id not showing up until I reload or click
Unanswered
hiro posted this in #help-forum
hiroOP
"use client";
import { useSession, signIn, signOut } from "next-auth/react";
import {router} from "next/client";
export default function HomePage() {
const { data: session } = useSession()
if (session) router.reload()
if (!session) {
return (
<div>
<button onClick={() => signIn("azure-ad")}>Sign in with Azure AD</button>
</div>
);
}
return (
<div>
<h1>Welcome, {session.user?.displayName || "Guest"}</h1>
<p>Email: {session.user?.email}</p>
{/* Check if 'id' is available before rendering */}
<p>ID: {session.user?.id ? session.user.id : "No ID available"}</p>
<button onClick={() => signOut()}>Sign out</button>
</div>
);
}import NextAuth, { AuthOptions } from "next-auth"
import AzureADProvider from "next-auth/providers/azure-ad"
import { JWT } from "next-auth/jwt"
import { Account, Profile, Session } from "next-auth"
import {cookies} from "next/headers";
export const authOptions: AuthOptions = {
providers: [
AzureADProvider({
clientId: process.env.AZURE_AD_CLIENT_ID as string,
clientSecret: process.env.AZURE_AD_CLIENT_SECRET as string,
tenantId: process.env.AZURE_AD_TENANT_ID as string,
authorization: {
url: `https://login.microsoftonline.com/${process.env.AZURE_AD_TENANT_ID}/oauth2/v2.0/authorize`,
params: {
scope: "openid profile email offline_access",
response_type: "code",
response_mode: "query",
prompt: "select_account",
},
},
allowDangerousEmailAccountLinking: true,
}),
],
callbacks: {
async jwt({ token, account, profile }) {
// Add profile data to the token on initial sign-in
if (account && profile) {
token.id = profile.sub;
token.displayName = profile.name;
token.email = profile.email;
token.image = profile.image;
}
return token;
},
async session({ session, token }) {
// Add custom properties to the session object
session.user.id = token.id as string;
session.user.displayName = token.displayName as string;
session.user.email = token.email as string;
session.user.image = token.image as string;
return session;
},
},
session: {
strategy: "jwt",
},
pages: {
signIn: '/auth/login',
signOut: '/auth/logout',
error: '/auth/error',
},
secret: process.env.NEXT_AUTH_SECRET,
}
export default NextAuth(authOptions)