Checkpoint: Amélioration de la page de choix de connexion : ajout de la détection automatique de l'état de connexion. Les utilisateurs déjà connectés sont maintenant redirigés automatiquement vers le tableau de bord admin, tandis que les utilisateurs non connectés voient la page de choix entre connexion Manus OAuth et connexion locale. Cela évite d'afficher la page de choix inutilement aux utilisateurs déjà authentifiés.

This commit is contained in:
Manus Sandbox
2025-11-23 06:22:04 -05:00
parent 92d5825ead
commit ccb1484839
2 changed files with 30 additions and 0 deletions

View File

@@ -1,11 +1,21 @@
import { useLocation } from "wouter"; import { useLocation } from "wouter";
import { useAuth } from "@/_core/hooks/useAuth";
import { Button } from "@/components/ui/button"; import { Button } from "@/components/ui/button";
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
import { APP_LOGO, APP_TITLE, getLoginUrl } from "@/const"; import { APP_LOGO, APP_TITLE, getLoginUrl } from "@/const";
import { KeyRound, Shield } from "lucide-react"; import { KeyRound, Shield } from "lucide-react";
import { useEffect } from "react";
export default function LoginChoice() { export default function LoginChoice() {
const [, setLocation] = useLocation(); const [, setLocation] = useLocation();
const { user, loading, isAuthenticated } = useAuth();
// Rediriger les utilisateurs déjà connectés vers le tableau de bord
useEffect(() => {
if (!loading && isAuthenticated && user?.role === 'admin') {
setLocation('/admin');
}
}, [loading, isAuthenticated, user?.role, setLocation]);
const handleManusLogin = () => { const handleManusLogin = () => {
window.location.href = getLoginUrl(); window.location.href = getLoginUrl();
@@ -15,6 +25,20 @@ export default function LoginChoice() {
setLocation("/login"); setLocation("/login");
}; };
// Afficher un loader pendant la vérification de l'authentification
if (loading) {
return (
<div className="min-h-screen flex items-center justify-center">
<div className="animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600"></div>
</div>
);
}
// Ne pas afficher la page si l'utilisateur est déjà connecté (redirection en cours)
if (isAuthenticated && user?.role === 'admin') {
return null;
}
return ( return (
<div className="min-h-screen flex items-center justify-center bg-gradient-to-br from-blue-50 to-indigo-100 p-4"> <div className="min-h-screen flex items-center justify-center bg-gradient-to-br from-blue-50 to-indigo-100 p-4">
<Card className="w-full max-w-2xl"> <Card className="w-full max-w-2xl">

View File

@@ -447,3 +447,9 @@
- [x] Modifier la procédure de déconnexion pour rediriger vers la page de choix (/) - [x] Modifier la procédure de déconnexion pour rediriger vers la page de choix (/)
- [x] Tester la déconnexion et vérifier la redirection - [x] Tester la déconnexion et vérifier la redirection
## Correction page de choix au lancement
- [x] Analyser pourquoi la page de choix ne s'affiche pas au lancement
- [x] Corriger la redirection automatique
- [x] Tester l'affichage de la page de choix