"use client" import type React from "react" import { useState, useEffect } from "react" import { useRouter, usePathname } from "next/navigation" import Link from "next/link" import { Button } from "@/components/ui/button" import { Badge } from "@/components/ui/badge" import { LayoutDashboard, FileText, Folder, Search, Users, Settings, Shield, MessageSquare, Bell, LogOut, Menu, X, TestTube, ChevronRight, Home, } from "lucide-react" import AuthModal from "@/components/4nk/AuthModal" import MessageBus from "@/lib/4nk/MessageBus" import UserStore from "@/lib/4nk/UserStore" // DebugInfo supprimé export default function DashboardLayout({ children }: { children: React.ReactNode }) { const [isAuthenticated, setIsAuthenticated] = useState(false) const [isAuthModalOpen, setIsAuthModalOpen] = useState(false) const [isLoading, setIsLoading] = useState(true) const [isMockMode, setIsMockMode] = useState(false) const [sidebarOpen, setSidebarOpen] = useState(false) const [userInfo, setUserInfo] = useState(null) const [showLogoutConfirm, setShowLogoutConfirm] = useState(false) const router = useRouter() const pathname = usePathname() const iframeUrl = process.env.NEXT_PUBLIC_4NK_IFRAME_URL || "https://dev3.4nkweb.com" const navigation = [ { name: "Tableau de bord", href: "/dashboard", icon: LayoutDashboard }, { name: "Documents", href: "/dashboard/documents", icon: FileText }, { name: "Dossiers", href: "/dashboard/folders", icon: Folder }, { name: "Recherche", href: "/dashboard/search", icon: Search }, { name: "Utilisateurs", href: "/dashboard/users", icon: Users }, { name: "Messages", href: "/dashboard/chat", icon: MessageSquare }, { name: "Paramètres", href: "/dashboard/settings", icon: Settings }, ] useEffect(() => { const checkAuthentication = async () => { try { const userStore = UserStore.getInstance() const accessToken = userStore.getAccessToken() const messageBus = MessageBus.getInstance(iframeUrl) if (accessToken) { // Vérifier si on est en mode mock // const mockMode = messageBus.isInMockMode() // setIsMockMode(mockMode) if (true) { console.log("🎭 Dashboard en mode mock") setIsAuthenticated(true) setUserInfo({ id: "mock_user_001", name: "Utilisateur Démo", email: "demo@docv.fr", role: "Administrateur", company: "Entreprise Démo (ID: 1234)", }) } else { // Vérifier la validité du token en mode production const isValid = await messageBus.validateToken() if (isValid) { setIsAuthenticated(true) const pairingId = userStore.getUserPairingId() setUserInfo({ id: pairingId?.slice(0, 8) + "...", name: "Utilisateur 4NK", email: "user@4nk.io", role: "Utilisateur", company: "Organisation 4NK", }) } else { setIsAuthModalOpen(true) } } } else { setIsAuthModalOpen(true) } } catch (error) { console.error("Error checking authentication:", error) setIsAuthModalOpen(true) } finally { setIsLoading(false) } } checkAuthentication() }, [iframeUrl]) const handleAuthSuccess = () => { setIsAuthModalOpen(false) setIsAuthenticated(true) // Recharger la page pour récupérer les nouvelles données window.location.reload() } const handleLogout = () => { const userStore = UserStore.getInstance() const messageBus = MessageBus.getInstance(iframeUrl) userStore.disconnect() // messageBus.disableMockMode() // Afficher un message de confirmation avec options setShowLogoutConfirm(true) } const confirmLogout = (goToHome = false) => { setShowLogoutConfirm(false) if (goToHome) { router.push("/") } else { router.push("/login") } } if (isLoading) { return (

Vérification de l'authentification...

) } if (!isAuthenticated) { return (
router.push("/login")} iframeUrl={iframeUrl} />
) } return (
{/* Sidebar mobile overlay */} {sidebarOpen && (
setSidebarOpen(false)} />
)} {/* Sidebar */}
{/* Logo */}
DocV {isMockMode && ( Démo )}
{/* User info */} {userInfo && (
{userInfo.name.charAt(0)}

{userInfo.name}

{userInfo.company}

)} {/* Navigation */} {/* Footer */}
Sécurisé par 4NK
{isMockMode && (
Mode démonstration actif
)}
{/* Main content */}
{/* Top bar */}
{isMockMode && ( Mode Démo )}
{/* Page content */}
{children}
{/* Modal de confirmation de déconnexion */} {showLogoutConfirm && (

Déconnexion réussie

Vous avez été déconnecté de votre espace sécurisé DocV.

Vos données restent sécurisées par le chiffrement 4NK

)} {/* Debug info retiré */}
) }