"use client" import type React from "react" import { useState } from "react" import { useRouter } from "next/navigation" import Link from "next/link" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Button } from "@/components/ui/button" import { Badge } from "@/components/ui/badge" import { Shield, Building2, TestTube, ArrowLeft, Home, Key, CheckCircle, AlertTriangle, Eye, EyeOff, } from "lucide-react" import { AuthModal } from "@/components/4nk/AuthModal" import MessageBus from "@/lib/4nk/MessageBus" import { MockService } from "@/lib/4nk/MockService" import UserStore from "@/lib/4nk/UserStore" export default function LoginPage() { const [companyId, setCompanyId] = useState("") const [isAuthModalOpen, setIsAuthModalOpen] = useState(false) const [isLoading, setIsLoading] = useState(false) const [showPairingSection, setShowPairingSection] = useState(false) const [pairingWords, setPairingWords] = useState(["", "", "", ""]) const [pairingError, setPairingError] = useState("") const [error, setError] = useState(null) const [pairingSuccess, setPairingSuccess] = useState(false) const router = useRouter() const [showPairingInput, setShowPairingInput] = useState(false) const iframeUrl = process.env.NEXT_PUBLIC_4NK_IFRAME_URL || "https://dev3.4nkweb.com" const handleLogin = () => { setIsAuthModalOpen(true) setError(null) } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() if (!companyId.trim()) { return } setIsLoading(true) try { // Si l'identifiant est "1234", activer le mode mock directement if (companyId === "1234") { console.log("🎭 Activation du mode mock avec l'identifiant:", companyId) const messageBus = MessageBus.getInstance(iframeUrl) const mockService = MockService.getInstance() const userStore = UserStore.getInstance() // Mode normal (pas de mock) // Authentification mock const authResult = await mockService.mockAuthentication(companyId) if (!authResult) { throw new Error("Échec de l'authentification de dĂ©monstration") } // Simuler la rĂ©cupĂ©ration des tokens const tokens = await mockService.mockRequestLink() userStore.connect(tokens.accessToken, tokens.refreshToken) // Simuler la rĂ©cupĂ©ration de l'ID d'appairage const pairingId = await mockService.mockGetUserPairingId() userStore.pair(pairingId) console.log("✅ Mode mock activĂ© avec succĂšs") // Redirection directe vers le dashboard router.push("/dashboard") } else { // Mode normal - ouvrir la modal d'authentification 4NK setIsAuthModalOpen(true) } } catch (error) { console.error("Erreur lors de l'activation du mode mock:", error) // En cas d'erreur, ouvrir quand mĂȘme la modal d'authentification setIsAuthModalOpen(true) } finally { setIsLoading(false) } } const handleAuthSuccess = () => { setIsAuthModalOpen(false) router.push("/dashboard") } const handlePairingSubmit = async (e: React.FormEvent) => { e.preventDefault() setPairingError("") // VĂ©rifier que tous les mots sont remplis if (pairingWords.some((word) => !word.trim())) { setPairingError("Veuillez saisir les 4 mots de pairing") return } // Simuler la vĂ©rification des mots de pairing const validWords = ["alpha", "bravo", "charlie", "delta"] const isValid = pairingWords.every((word, index) => word.toLowerCase().trim() === validWords[index]) if (isValid) { setPairingSuccess(true) setTimeout(() => { // Simuler l'ajout de l'appareil et la connexion const userStore = UserStore.getInstance() const mockService = MockService.getInstance() // Simuler des tokens pour le pairing userStore.connect("paired_access_token", "paired_refresh_token") userStore.pair("paired_device_id") router.push("/dashboard") }, 2000) } else { setPairingError("Mots de pairing incorrects. VĂ©rifiez les mots saisis sur votre autre appareil.") } } const handlePairingWordChange = (index: number, value: string) => { const newWords = [...pairingWords] newWords[index] = value setPairingWords(newWords) setPairingError("") } return (
{/* Lien de retour vers l'accueil */}
Retour Ă  l'accueil
{/* Logo et titre */}

DocV

Gestion électronique de documents sécurisée

{/* Carte de connexion 4NK */} Connexion sécurisée 4NK Authentification cryptographique sans mot de passe {/* Description de la connexion 4NK */}

🔐 Authentification 4NK

  • ‱ Aucun mot de passe requis
  • ‱ IdentitĂ© cryptographique sĂ©curisĂ©e
  • ‱ Chiffrement bout en bout
  • ‱ Protection par blockchain
{/* Affichage des erreurs */} {error && (

Erreur de connexion :

{error}

)} {/* Bouton de connexion */} {/* Informations sur l'iframe */}

URL d'authentification :
{iframeUrl}

{/* Badges de sécurité */}
Sécurisé 4NK Chiffrement bout en bout Blockchain
{/* Lien vers l'espace public */}
Découvrir DocV sans se connecter
{/* Informations légales */}

En vous connectant, vous acceptez nos conditions d'utilisation

Vos données sont protégées par le chiffrement 4NK

{/* Modal d'authentification 4NK */} setIsAuthModalOpen(false)} iframeUrl={iframeUrl} />
) }