"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 [pairingSuccess, setPairingSuccess] = useState(false) const router = useRouter() const [showPairingInput, setShowPairingInput] = useState(false) const iframeUrl = process.env.NEXT_PUBLIC_4NK_IFRAME_URL || "https://dev.4nk.io" 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() // Activer le mode mock messageBus.enableMockMode() // 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 (
Gestion électronique de documents sécurisée
Cet appareil a été ajouté à votre compte avec succès.
En vous connectant, vous acceptez nos conditions d'utilisation
Vos données sont protégées par le chiffrement 4NK