92 lines
2.4 KiB
TypeScript
92 lines
2.4 KiB
TypeScript
import { cookies } from "next/headers";
|
|
import { COOKIE_NAME } from "./auth-utils";
|
|
import { evaluationService } from "@/services/evaluation-service";
|
|
import { TeamsService } from "@/services/teams-service";
|
|
import { SkillsService } from "@/services/skills-service";
|
|
import { SkillCategory, Team } from "./types";
|
|
|
|
/**
|
|
* Récupère l'UUID utilisateur depuis le cookie côté serveur
|
|
*/
|
|
export async function getUserUuidFromCookie(): Promise<string | null> {
|
|
const cookieStore = await cookies();
|
|
const userUuidCookie = cookieStore.get("peakSkills_userId");
|
|
|
|
if (!userUuidCookie?.value) {
|
|
return null;
|
|
}
|
|
|
|
return userUuidCookie.value;
|
|
}
|
|
|
|
/**
|
|
* Récupère l'ID utilisateur depuis le cookie côté serveur (legacy)
|
|
*/
|
|
export async function getUserIdFromCookie(): Promise<number | null> {
|
|
const cookieStore = await cookies();
|
|
const userIdCookie = cookieStore.get("peakSkills_userId");
|
|
|
|
if (!userIdCookie?.value) {
|
|
return null;
|
|
}
|
|
|
|
// Essayer de parser comme number pour backward compatibility
|
|
const userId = parseInt(userIdCookie.value);
|
|
return isNaN(userId) ? null : userId;
|
|
}
|
|
|
|
/**
|
|
* Récupère l'évaluation complète de l'utilisateur côté serveur
|
|
*/
|
|
export async function getServerUserEvaluation() {
|
|
const userUuid = await getUserUuidFromCookie();
|
|
|
|
if (!userUuid) {
|
|
return null;
|
|
}
|
|
|
|
try {
|
|
// Charger directement l'évaluation par UUID
|
|
const userEvaluation = await evaluationService.loadUserEvaluationByUuid(
|
|
userUuid
|
|
);
|
|
|
|
return userEvaluation;
|
|
} catch (error) {
|
|
console.error("Failed to get user evaluation:", error);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Charge les catégories de compétences côté serveur depuis PostgreSQL
|
|
*/
|
|
export async function getServerSkillCategories(): Promise<SkillCategory[]> {
|
|
try {
|
|
return await SkillsService.getSkillCategories();
|
|
} catch (error) {
|
|
console.error("Failed to load skill categories:", error);
|
|
return [];
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Charge les équipes côté serveur depuis PostgreSQL
|
|
*/
|
|
export async function getServerTeams(): Promise<Team[]> {
|
|
try {
|
|
return await TeamsService.getTeams();
|
|
} catch (error) {
|
|
console.error("Failed to load teams:", error);
|
|
return [];
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Vérifie simplement si l'utilisateur est authentifié via le cookie
|
|
*/
|
|
export async function isUserAuthenticated(): Promise<boolean> {
|
|
const userUuid = await getUserUuidFromCookie();
|
|
return !!userUuid;
|
|
}
|