diff --git a/front/app/api/auth/[...nextauth]/route.ts b/front/app/api/auth/[...nextauth]/route.ts index 575431e..e17af22 100644 --- a/front/app/api/auth/[...nextauth]/route.ts +++ b/front/app/api/auth/[...nextauth]/route.ts @@ -11,33 +11,37 @@ export const authOptions: NextAuthOptions = { profile(profileData) { return { id: profileData.sub, - name: profileData.name || profileData.preferred_username, + first_name: profileData.given_name, + last_name: profileData.family_name, + username: profileData.preferred_username, email: profileData.email, - image: null, - // Extraction du rôle ou groupe de l'utilisateur depuis Keycloak - role: Array.isArray(profileData.realm_access?.roles) - ? profileData.realm_access.roles - : [], + role: profileData.realm_roles, }; }, }), ], callbacks: { async jwt({ token, account, profile }) { + console.log("Token", token); + console.log("Account", account); + console.log("Profile", profile); // Au moment de la première connexion, sauvegarde de l'access token et du rôle dans le JWT if (account && profile) { token.accessToken = account.access_token; - token.role = profile.role; + token.first_name = profile.given_name; + token.last_name = profile.family_name; + token.username = profile.preferred_username; + token.role = profile.realm_roles; } return token; }, async session({ session, token }) { // On injecte l'access token et le rôle dans la session accessible côté client session.accessToken = token.accessToken as string; - session.user.role = - typeof token.role == "string" || Array.isArray(token.role) - ? token.role - : []; + session.user.first_name = token.first_name as string; + session.user.last_name = token.last_name as string; + session.user.username = token.username as string; + session.user.role = token.role as string[]; return session; }, }, diff --git a/front/components/main-nav.tsx b/front/components/main-nav.tsx index fe89ddc..4172030 100644 --- a/front/components/main-nav.tsx +++ b/front/components/main-nav.tsx @@ -1,6 +1,6 @@ "use client"; -import { useState } from "react"; +import { useEffect, useState } from "react"; import { Calendar, MessageSquare, @@ -17,6 +17,8 @@ export function MainNav() { const [isSidebarOpen, setIsSidebarOpen] = useState(false); const { data: session } = useSession(); + console.log(session); + return ( <>