refactor: migrate authentication to NextAuth and clean up related services
This commit is contained in:
13
components/auth/session-provider.tsx
Normal file
13
components/auth/session-provider.tsx
Normal file
@@ -0,0 +1,13 @@
|
||||
"use client";
|
||||
|
||||
import { SessionProvider as NextAuthSessionProvider } from "next-auth/react";
|
||||
import { ReactNode } from "react";
|
||||
|
||||
interface SessionProviderProps {
|
||||
children: ReactNode;
|
||||
}
|
||||
|
||||
export function SessionProvider({ children }: SessionProviderProps) {
|
||||
return <NextAuthSessionProvider>{children}</NextAuthSessionProvider>;
|
||||
}
|
||||
|
||||
@@ -31,19 +31,30 @@ export function AuthWrapper({ teams, initialUser }: AuthWrapperProps) {
|
||||
setLoading(true);
|
||||
setError(null);
|
||||
try {
|
||||
const response = await authClient.login({ email, password });
|
||||
const result = await authClient.login({ email, password });
|
||||
|
||||
if (!result.success) {
|
||||
setError(result.error || "Erreur de connexion");
|
||||
toast({
|
||||
title: "Erreur de connexion",
|
||||
description: result.error || "Erreur de connexion",
|
||||
variant: "destructive",
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
toast({
|
||||
title: "Connexion réussie",
|
||||
description: response.message,
|
||||
description: "Bienvenue !",
|
||||
});
|
||||
|
||||
// Rediriger vers l'accueil après connexion
|
||||
router.push("/");
|
||||
router.refresh();
|
||||
} catch (error: any) {
|
||||
console.error("Login failed:", error);
|
||||
|
||||
const errorMessage = error.response?.data?.error || "Erreur de connexion";
|
||||
const errorMessage = error.message || "Erreur de connexion";
|
||||
|
||||
setError(errorMessage);
|
||||
toast({
|
||||
@@ -66,26 +77,30 @@ export function AuthWrapper({ teams, initialUser }: AuthWrapperProps) {
|
||||
setLoading(true);
|
||||
setError(null);
|
||||
try {
|
||||
const response = await authClient.register(data);
|
||||
const result = await authClient.register(data);
|
||||
|
||||
if (!result.success) {
|
||||
setError(result.error || "Erreur lors de la création du compte");
|
||||
toast({
|
||||
title: "Erreur d'inscription",
|
||||
description: result.error || "Erreur lors de la création du compte",
|
||||
variant: "destructive",
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
toast({
|
||||
title: "Compte créé",
|
||||
description: response.message,
|
||||
});
|
||||
|
||||
// Après inscription réussie, connecter automatiquement l'utilisateur
|
||||
toast({
|
||||
title: "Connexion automatique",
|
||||
description: "Redirection vers l'accueil...",
|
||||
description: "Connexion automatique...",
|
||||
});
|
||||
|
||||
// Rediriger vers l'accueil après inscription réussie
|
||||
router.push("/");
|
||||
router.refresh();
|
||||
} catch (error: any) {
|
||||
console.error("Register failed:", error);
|
||||
|
||||
const errorMessage =
|
||||
error.response?.data?.error || "Erreur lors de la création du compte";
|
||||
const errorMessage = error.message || "Erreur lors de la création du compte";
|
||||
|
||||
setError(errorMessage);
|
||||
toast({
|
||||
@@ -102,11 +117,13 @@ export function AuthWrapper({ teams, initialUser }: AuthWrapperProps) {
|
||||
try {
|
||||
await authClient.logout();
|
||||
// Rediriger vers la page de login après déconnexion
|
||||
window.location.href = "/login";
|
||||
router.push("/login");
|
||||
router.refresh();
|
||||
} catch (error) {
|
||||
console.error("Logout failed:", error);
|
||||
// En cas d'erreur, forcer le rechargement pour nettoyer l'état
|
||||
window.location.reload();
|
||||
router.push("/login");
|
||||
router.refresh();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user