refactor: no XHR for currentUser but backside
This commit is contained in:
@@ -1,56 +0,0 @@
|
||||
import { NextRequest, NextResponse } from "next/server";
|
||||
import { AuthService, userService, TeamsService } from "@/services";
|
||||
|
||||
/**
|
||||
* GET /api/auth - Récupère les informations de l'utilisateur connecté
|
||||
*/
|
||||
export async function GET(request: NextRequest) {
|
||||
try {
|
||||
// Récupérer l'UUID utilisateur depuis le cookie
|
||||
const userUuid = await AuthService.getUserUuidFromCookie();
|
||||
|
||||
if (!userUuid) {
|
||||
return NextResponse.json({ error: "Non authentifié" }, { status: 401 });
|
||||
}
|
||||
|
||||
// Récupérer le profil utilisateur
|
||||
const userProfile = await userService.getUserByUuid(userUuid);
|
||||
|
||||
if (!userProfile) {
|
||||
return NextResponse.json(
|
||||
{ error: "Utilisateur non trouvé" },
|
||||
{ status: 404 }
|
||||
);
|
||||
}
|
||||
|
||||
// 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;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Failed to fetch team name:", error);
|
||||
}
|
||||
}
|
||||
|
||||
// Retourner les informations complètes de l'utilisateur
|
||||
return NextResponse.json({
|
||||
user: {
|
||||
firstName: userProfile.firstName,
|
||||
lastName: userProfile.lastName,
|
||||
teamId: userProfile.teamId,
|
||||
teamName: teamName,
|
||||
uuid: userUuid,
|
||||
},
|
||||
});
|
||||
} catch (error) {
|
||||
console.error("Auth GET error:", error);
|
||||
return NextResponse.json(
|
||||
{ error: "Erreur interne du serveur" },
|
||||
{ status: 500 }
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@ 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";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "PeakSkills - Auto-évaluation de compétences",
|
||||
@@ -14,11 +15,42 @@ export const metadata: Metadata = {
|
||||
"Plateforme d'auto-évaluation de compétences techniques pour les équipes",
|
||||
};
|
||||
|
||||
export default function RootLayout({
|
||||
export default async function RootLayout({
|
||||
children,
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
}) {
|
||||
// Récupérer les infos utilisateur côté serveur
|
||||
let userInfo = null;
|
||||
try {
|
||||
const { userUuid, userProfile } =
|
||||
await AuthService.requireAuthenticatedUser();
|
||||
|
||||
// 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;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Failed to fetch team name:", error);
|
||||
}
|
||||
}
|
||||
|
||||
userInfo = {
|
||||
firstName: userProfile.firstName,
|
||||
lastName: userProfile.lastName,
|
||||
teamName,
|
||||
teamId: userProfile.teamId,
|
||||
uuid: userUuid,
|
||||
};
|
||||
} catch (error) {
|
||||
// Utilisateur non authentifié, userInfo reste null
|
||||
console.log("User not authenticated:", error);
|
||||
}
|
||||
|
||||
return (
|
||||
<html lang="en" suppressHydrationWarning>
|
||||
<body
|
||||
@@ -30,7 +62,7 @@ export default function RootLayout({
|
||||
enableSystem
|
||||
disableTransitionOnChange
|
||||
>
|
||||
<UserProvider>
|
||||
<UserProvider initialUserInfo={userInfo}>
|
||||
<NavigationWrapper />
|
||||
<main className="min-h-screen">{children}</main>
|
||||
<Toaster />
|
||||
|
||||
Reference in New Issue
Block a user