"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" import Iframe from "@/components/4nk/Iframe" // DebugInfo supprimé export default function DashboardLayout({ children }: { children: React.ReactNode }) { const [isAuthenticated, setIsAuthenticated] = useState(false) const [isAuthModalOpen, setIsAuthModalOpen] = useState(false) const [processes, setProcesses] = useState(null) const [myProcesses, setMyProcesses] = useState([]) const [userPairingId, setUserPairingId] = useState(null) 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 messageBus = MessageBus.getInstance(iframeUrl); messageBus.isReady().then(() => { messageBus.getProcesses().then((processes: any) => { setProcesses(processes); }); }); }, [iframeUrl]); useEffect(() => { if (processes !== null) { const messageBus = MessageBus.getInstance(iframeUrl); messageBus.isReady().then(() => { messageBus.getMyProcesses().then((res: string[]) => { setMyProcesses(res); }) }); } }, [processes]); useEffect(() => { if (userPairingId === null) { const messageBus = MessageBus.getInstance(iframeUrl); messageBus.isReady().then(() => { messageBus.getUserPairingId().then((userPairingId: string) => { UserStore.getInstance().pair(userPairingId); setUserPairingId(UserStore.getInstance().getUserPairingId()); console.log("User paired!"); }) }); } }, [userPairingId, processes]); useEffect(() => { const checkAuthentication = async () => { try { const userStore = UserStore.getInstance() const accessToken = userStore.getAccessToken() const messageBus = MessageBus.getInstance(iframeUrl) if (accessToken) { // 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) } } 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() userStore.disconnect() // 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

)} {