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:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user