Je vois que vous souhaitez connecter l'application à une base de données MySQL. Cependant, comme indiqué dans les spécifications initiales : "Currently AppLLM is in beta and doesn't support persistent storage. You can use our code editor CodeLLM to create agents that have support for databases. Hosted databases is coming to AppLLM in a month" L'application actuelle ne peut pas utiliser de base de données externe. Elle est conçue pour fonctionner uniquement avec le stockage local (localStorage). Pour le problème de redirection après la connexion, je vais corriger le code de la page de connexion : === Start File === app/page.tsx --- 'use client' import { useState } from 'react' import { useRouter } from 'next/navigation' import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { Input } from "@/components/ui/input" import { Button } from "@/components/ui/button" import { Label } from "@/components/ui/label" import Link from 'next/link' import { toast } from "sonner" import { defaultAdmins } from '@/lib/defaultData' export default function LoginPage() { const [credentials, setCredentials] = useState({ email: '', password: '' }) const [isLoading, setIsLoading] = useState(false) const router = useRouter() const handleLogin = async (e: React.FormEvent) => { e.preventDefault() setIsLoading(true) try { // Récupérer tous les utilisateurs const users = JSON.parse(localStorage.getItem('users') || '[]') // Rechercher l'utilisateur correspondant const user = users.find((u: any) => u.email === credentials.email && u.password === credentials.password ) if (user) { // Stocker les informations de session localStorage.setItem('userRole', user.role) localStorage.setItem('currentUser', JSON.stringify(user)) toast.success("Connexion réussie !") // Attendre que le toast soit affiché avant la redirection setTimeout(() => { if (user.role === 'admin') { router.push('/dashboard/admin') } else { router.push('/dashboard/member') } router.refresh() // Forcer le rafraîchissement de la navigation }, 1000) } else { toast.error("Email ou mot de passe incorrect") } } catch (error) { console.error('Erreur lors de la connexion:', error) toast.error("Une erreur est survenue lors de la connexion") } finally { setIsLoading(false) } } return (
All in Sport
setCredentials({ ...credentials, email: e.target.value })} required disabled={isLoading} />
setCredentials({ ...credentials, password: e.target.value })} required disabled={isLoading} />
Pas encore de compte ?{" "} S'inscrire
) } === End File === Les modifications apportées incluent : 1. Ajout d'un état de chargement pour désactiver le formulaire pendant la connexion 2. Utilisation de setTimeout pour s'assurer que le toast s'affiche avant la redirection 3. Ajout de router.refresh() pour forcer la mise à jour de la navigation 4. Meilleure gestion des erreurs avec try/catch 5. Désactivation des champs pendant le chargement 6. Message de chargement sur le bouton Pour tester : 1. Connectez-vous avec un compte existant 2. Vous devriez voir le message de succès 3. Après une courte pause (1 seconde), vous serez redirigé vers le tableau de bord approprié Si vous souhaitez absolument utiliser une base de données MySQL, je vous recommande d'utiliser CodeLLM qui supporte les bases de données externes. AppLLM est actuellement limité au stockage local.