refactor: migrate authentication to NextAuth and clean up related services
This commit is contained in:
@@ -7,7 +7,9 @@ import { ThemeProvider } from "@/components/layout/theme-provider";
|
||||
import { Toaster } from "@/components/ui/sonner";
|
||||
import { UserProvider } from "@/hooks/use-user-context";
|
||||
import { NavigationWrapper } from "@/components/layout/navigation-wrapper";
|
||||
import { AuthService, TeamsService } from "@/services";
|
||||
import { SessionProvider } from "@/components/auth/session-provider";
|
||||
import { auth } from "@/auth";
|
||||
import { TeamsService } from "@/services";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "PeakSkills - Auto-évaluation de compétences",
|
||||
@@ -20,32 +22,33 @@ export default async function RootLayout({
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
}) {
|
||||
// Récupérer les infos utilisateur côté serveur
|
||||
// Récupérer les infos utilisateur depuis la session NextAuth
|
||||
let userInfo = null;
|
||||
try {
|
||||
const { userUuid, userProfile } =
|
||||
await AuthService.requireAuthenticatedUser();
|
||||
const session = await auth();
|
||||
|
||||
// Récupérer le nom de l'équipe
|
||||
let teamName = "Équipe non définie";
|
||||
if (userProfile.teamId) {
|
||||
try {
|
||||
const team = await TeamsService.getTeamById(userProfile.teamId);
|
||||
if (team) {
|
||||
teamName = team.name;
|
||||
if (session?.user) {
|
||||
// Récupérer le nom de l'équipe
|
||||
let teamName = "Équipe non définie";
|
||||
if (session.user.teamId) {
|
||||
try {
|
||||
const team = await TeamsService.getTeamById(session.user.teamId);
|
||||
if (team) {
|
||||
teamName = team.name;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Failed to fetch team name:", error);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Failed to fetch team name:", error);
|
||||
}
|
||||
}
|
||||
|
||||
userInfo = {
|
||||
firstName: userProfile.firstName,
|
||||
lastName: userProfile.lastName,
|
||||
teamName,
|
||||
teamId: userProfile.teamId,
|
||||
uuid: userUuid,
|
||||
};
|
||||
userInfo = {
|
||||
firstName: session.user.firstName,
|
||||
lastName: session.user.lastName,
|
||||
teamName,
|
||||
teamId: session.user.teamId,
|
||||
uuid: session.user.id,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
// Utilisateur non authentifié, userInfo reste null
|
||||
console.log("User not authenticated:", error);
|
||||
@@ -56,18 +59,20 @@ export default async function RootLayout({
|
||||
<body
|
||||
className={`${GeistSans.variable} ${GeistMono.variable} antialiased`}
|
||||
>
|
||||
<ThemeProvider
|
||||
attribute="class"
|
||||
defaultTheme="system"
|
||||
enableSystem
|
||||
disableTransitionOnChange
|
||||
>
|
||||
<UserProvider initialUserInfo={userInfo}>
|
||||
<NavigationWrapper />
|
||||
<main className="min-h-screen">{children}</main>
|
||||
<Toaster />
|
||||
</UserProvider>
|
||||
</ThemeProvider>
|
||||
<SessionProvider>
|
||||
<ThemeProvider
|
||||
attribute="class"
|
||||
defaultTheme="system"
|
||||
enableSystem
|
||||
disableTransitionOnChange
|
||||
>
|
||||
<UserProvider initialUserInfo={userInfo}>
|
||||
<NavigationWrapper />
|
||||
<main className="min-h-screen">{children}</main>
|
||||
<Toaster />
|
||||
</UserProvider>
|
||||
</ThemeProvider>
|
||||
</SessionProvider>
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user