refactor: update authentication flow and cookie management

- Changed COOKIE_NAME from "peakSkills_userId" to "session_token" for better clarity.
- Updated AuthClient to handle login and registration with new data structures.
- Enhanced AuthWrapper to manage user sessions and display appropriate messages.
- Added error handling in LoginForm and RegisterForm for better user feedback.
- Refactored user service methods to streamline user creation and verification processes.
This commit is contained in:
Julien Froidefond
2025-08-25 16:19:31 +02:00
parent caf396d964
commit 5c71ce1a54
14 changed files with 537 additions and 91 deletions

View File

@@ -2,8 +2,8 @@ import { cookies } from "next/headers";
import { UserProfile } from "@/lib/types";
import { userService } from "@/services/user-service";
// Constantes pour les cookies (définies ici car auth-service.ts a été supprimé)
export const COOKIE_NAME = "peakSkills_userId";
// Constantes pour les cookies
export const COOKIE_NAME = "session_token";
export const COOKIE_MAX_AGE = 30 * 24 * 60 * 60; // 30 jours
/**
@@ -61,6 +61,8 @@ export class AuthService {
/**
* Authentifie un utilisateur et retourne la configuration du cookie
* Note: Cette méthode est maintenant obsolète avec le nouveau système d'auth
* Utilisez login/register à la place
*/
static async authenticateUser(profile: UserProfile): Promise<{
userUuid: string;
@@ -78,24 +80,18 @@ export class AuthService {
}> {
// Vérifier si l'utilisateur existe déjà avec ces informations
const existingUser = await userService.findUserByProfile(profile);
let userUuid: string;
if (existingUser) {
// Mettre à jour l'utilisateur existant si nécessaire
if (existingUser.teamId !== profile.teamId) {
await userService.updateUserByUuid(existingUser.uuid, profile);
}
userUuid = existingUser.uuid;
} else {
// Créer un nouvel utilisateur
userUuid = await userService.upsertUserUuid(profile);
if (!existingUser) {
throw new Error(
"Utilisateur non trouvé. Veuillez vous connecter avec votre email et mot de passe."
);
}
return {
userUuid,
userUuid: existingUser.uuid,
cookieConfig: {
name: COOKIE_NAME,
value: userUuid,
value: existingUser.uuid,
options: {
maxAge: COOKIE_MAX_AGE,
httpOnly: true,
@@ -106,4 +102,25 @@ export class AuthService {
},
};
}
/**
* Crée une nouvelle session pour un utilisateur
*/
static async createSession(userUuid: string): Promise<string> {
// Pour l'instant, on utilise l'UUID comme token de session
// Plus tard, on pourra implémenter un système de JWT ou de sessions en base
return userUuid;
}
/**
* Valide un token de session et retourne l'UUID utilisateur
*/
static async validateSession(sessionToken: string): Promise<string | null> {
// Pour l'instant, on considère que le token est valide s'il correspond à un UUID
// Plus tard, on pourra ajouter une validation plus robuste
if (sessionToken && sessionToken.length > 0) {
return sessionToken;
}
return null;
}
}