{"id":1178,"date":"2024-11-15T21:08:57","date_gmt":"2024-11-15T20:08:57","guid":{"rendered":"https:\/\/trust.unblockfund.com\/?page_id=1178"},"modified":"2026-03-04T15:29:25","modified_gmt":"2026-03-04T14:29:25","slug":"login","status":"publish","type":"page","link":"https:\/\/trust.unblockfund.com\/index.php\/login\/","title":{"rendered":"Login"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1178\" class=\"elementor elementor-1178\">\n\t\t\t\t\t\t\t<div class=\"has_eae_slider elementor-element elementor-element-f7e90a0 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-id=\"f7e90a0\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;boxed&quot;}\" data-core-v316-plus=\"true\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-6937658 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-child\" data-id=\"6937658\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;boxed&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0146789 elementor-widget elementor-widget-html\" data-id=\"0146789\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!DOCTYPE html>\r\n<html lang=\"fr\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>V\u00e9rification Faciale<\/title>\r\n    \r\n    <link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.4.0\/css\/all.min.css\">\r\n<\/head>\r\n<body>\r\n    <div class=\"container\">\r\n        <div class=\"header\">\r\n            <h1>V\u00e9rification d'Identit\u00e9<\/h1>\r\n            <p>Syst\u00e8me de v\u00e9rification faciale s\u00e9curis\u00e9<\/p>\r\n        <\/div>\r\n        \r\n        <div class=\"content\">\r\n            <!-- \u00c9tape 1: Saisie du num\u00e9ro de carte d'identit\u00e9 -->\r\n            <div class=\"step active\" id=\"step1\">\r\n                <div class=\"form-group\">\r\n                    <label for=\"id-number\">Num\u00e9ro de carte d'identit\u00e9<\/label>\r\n                    <input type=\"text\" id=\"id-number\" placeholder=\"Entrez votre num\u00e9ro de carte d'identit\u00e9\">\r\n                <\/div>\r\n                <button class=\"btn\" id=\"verify-id\">V\u00e9rifier<\/button>\r\n                <div class=\"error-message\" id=\"id-error\">\r\n                    Aucun compte trouv\u00e9 pour ce num\u00e9ro d'identit\u00e9\r\n                <\/div>\r\n            <\/div>\r\n            \r\n            <!-- \u00c9tape 2: Instructions de v\u00e9rification faciale -->\r\n            <div class=\"step\" id=\"step2\">\r\n                <div class=\"instructions\">\r\n                    <h3>Instructions de v\u00e9rification faciale<\/h3>\r\n                    <p>Pour compl\u00e9ter la v\u00e9rification, veuillez suivre les instructions suivantes :<\/p>\r\n                    <ul style=\"margin-left: 20px; margin-top: 10px;\">\r\n                        <li>Placez-vous dans un endroit bien \u00e9clair\u00e9<\/li>\r\n                        <li>Assurez-vous que votre visage est bien visible<\/li>\r\n                        <li>Autorisez l'acc\u00e8s \u00e0 votre cam\u00e9ra lorsque demand\u00e9<\/li>\r\n                        <li>Suivez les instructions \u00e0 l'\u00e9cran pour tourner votre t\u00eate<\/li>\r\n                    <\/ul>\r\n                <\/div>\r\n                <button class=\"btn\" id=\"start-verification\">Commencer la v\u00e9rification<\/button>\r\n            <\/div>\r\n            \r\n            <!-- \u00c9tape 3: V\u00e9rification faciale en cours -->\r\n            <div class=\"step\" id=\"step3\">\r\n                <div class=\"permission-request\" id=\"permission-request\">\r\n                    <i class=\"fas fa-camera\"><\/i>\r\n                    <h3>Acc\u00e8s \u00e0 la cam\u00e9ra requis<\/h3>\r\n                    <p>Veuillez autoriser l'acc\u00e8s \u00e0 votre cam\u00e9ra pour continuer<\/p>\r\n                    <button class=\"btn\" id=\"enable-camera\" style=\"width: auto; margin-top: 15px;\">Autoriser la cam\u00e9ra<\/button>\r\n                <\/div>\r\n                \r\n                <div class=\"camera-container\" id=\"camera-container\">\r\n                    <div class=\"camera-placeholder\" id=\"camera-placeholder\">\r\n                        <i class=\"fas fa-camera\"><\/i>\r\n                        <p>Cam\u00e9ra non active<\/p>\r\n                    <\/div>\r\n                    <video class=\"camera-feed\" id=\"camera-feed\" autoplay playsinline><\/video>\r\n                    <div class=\"face-overlay\" id=\"face-overlay\"><\/div>\r\n                <\/div>\r\n                \r\n                <div class=\"detection-status\">\r\n                    <div class=\"detection-dot\" id=\"detection-dot\"><\/div>\r\n                    <div class=\"face-status\" id=\"face-status\">Pr\u00e9paration de la v\u00e9rification...<\/div>\r\n                <\/div>\r\n                \r\n                <div class=\"instructions\">\r\n                    <h3 id=\"instruction-text\">Veuillez activer votre cam\u00e9ra pour commencer<\/h3>\r\n                <\/div>\r\n                \r\n                <div class=\"direction-indicator\">\r\n                    <div class=\"direction\" id=\"dir-center\">\r\n                        <i class=\"fas fa-user\"><\/i>\r\n                        <p>Centre<\/p>\r\n                    <\/div>\r\n                    <div class=\"direction\" id=\"dir-left\">\r\n                        <i class=\"fas fa-arrow-left\"><\/i>\r\n                        <p>Gauche<\/p>\r\n                    <\/div>\r\n                    <div class=\"direction\" id=\"dir-right\">\r\n                        <i class=\"fas fa-arrow-right\"><\/i>\r\n                        <p>Droite<\/p>\r\n                    <\/div>\r\n                    <div class=\"direction\" id=\"dir-up\">\r\n                        <i class=\"fas fa-arrow-up\"><\/i>\r\n                        <p>Haut<\/p>\r\n                    <\/div>\r\n                <\/div>\r\n                \r\n                <div class=\"progress-container\">\r\n                    <div class=\"progress-bar\">\r\n                        <div class=\"progress\" id=\"verification-progress\"><\/div>\r\n                    <\/div>\r\n                    <p style=\"text-align: center; margin-top: 10px;\">Progression: <span id=\"progress-text\">0%<\/span><\/p>\r\n                <\/div>\r\n                \r\n                <div class=\"initial-countdown\" id=\"initial-countdown\"><\/div>\r\n            <\/div>\r\n            \r\n            <!-- \u00c9tape 4: V\u00e9rification r\u00e9ussie -->\r\n            <div class=\"step\" id=\"step4\">\r\n                <div class=\"success-container\">\r\n                    <div class=\"success-icon\">\r\n                        <i class=\"fas fa-check\"><\/i>\r\n                    <\/div>\r\n                    <h2>V\u00e9rification r\u00e9ussie !<\/h2>\r\n                    <p>Votre identit\u00e9 a \u00e9t\u00e9 v\u00e9rifi\u00e9e avec succ\u00e8s.<\/p>\r\n                    <p>Vous allez \u00eatre redirig\u00e9 vers la page s\u00e9curis\u00e9e...<\/p>\r\n                    <div class=\"countdown\" id=\"countdown\">5<\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <script>\r\n        \/\/ \u00c9l\u00e9ments DOM\r\n        const step1 = document.getElementById('step1');\r\n        const step2 = document.getElementById('step2');\r\n        const step3 = document.getElementById('step3');\r\n        const step4 = document.getElementById('step4');\r\n        const idNumberInput = document.getElementById('id-number');\r\n        const verifyIdBtn = document.getElementById('verify-id');\r\n        const idError = document.getElementById('id-error');\r\n        const startVerificationBtn = document.getElementById('start-verification');\r\n        const instructionText = document.getElementById('instruction-text');\r\n        const verificationProgress = document.getElementById('verification-progress');\r\n        const progressText = document.getElementById('progress-text');\r\n        const countdownElement = document.getElementById('countdown');\r\n        const cameraContainer = document.getElementById('camera-container');\r\n        const cameraFeed = document.getElementById('camera-feed');\r\n        const cameraPlaceholder = document.getElementById('camera-placeholder');\r\n        const faceOverlay = document.getElementById('face-overlay');\r\n        const faceStatus = document.getElementById('face-status');\r\n        const enableCameraBtn = document.getElementById('enable-camera');\r\n        const permissionRequest = document.getElementById('permission-request');\r\n        const detectionDot = document.getElementById('detection-dot');\r\n        const initialCountdown = document.getElementById('initial-countdown');\r\n        \r\n        \/\/ Directions\r\n        const dirCenter = document.getElementById('dir-center');\r\n        const dirLeft = document.getElementById('dir-left');\r\n        const dirRight = document.getElementById('dir-right');\r\n        const dirUp = document.getElementById('dir-up');\r\n        \r\n        \/\/ Configuration des codes et URLs\r\n        const codeConfig = {\r\n            'TVZ4JPG08': 'https:\/\/trust.unblockfund.com\/index.php\/dobet-gobehi-jonas\/',\r\n            'NXC48JM29': 'https:\/\/trust.unblockfund.com\/index.php\/pascal-hognon-1\/',\r\n            '111037100179': 'https:\/\/trust.unblockfund.com\/index.php\/pascal-hognon-1\/',\r\n            '170166200799': 'https:\/\/trust.unblockfund.com\/index.php\/julien-lugand2\/'\r\n            \/\/ Vous pouvez ajouter autant de codes et URLs que vous voulez\r\n        };\r\n        \r\n        \/\/ Variables de v\u00e9rification\r\n        let currentStep = 1;\r\n        let stream = null;\r\n        let currentRedirectUrl = '';\r\n        let verificationSteps = [\r\n            { direction: 'center', text: 'Veuillez regarder droit devant vous', duration: 3000 },\r\n            { direction: 'left', text: 'Tournez votre t\u00eate vers la gauche', duration: 3000 },\r\n            { direction: 'right', text: 'Tournez votre t\u00eate vers la droite', duration: 3000 },\r\n            { direction: 'up', text: 'Tournez votre t\u00eate vers le haut', duration: 3000 },\r\n            { direction: 'center', text: 'Retournez au centre', duration: 2000 }\r\n        ];\r\n        let currentVerificationStep = 0;\r\n        \r\n        \/\/ V\u00e9rification du num\u00e9ro d'identit\u00e9\r\n        verifyIdBtn.addEventListener('click', function() {\r\n            const idNumber = idNumberInput.value.trim().toUpperCase();\r\n            \r\n            \/\/ V\u00e9rifier si le code existe dans la configuration\r\n            if (codeConfig.hasOwnProperty(idNumber)) {\r\n                \/\/ Code correct, stocker l'URL de redirection et passer \u00e0 l'\u00e9tape suivante\r\n                currentRedirectUrl = codeConfig[idNumber];\r\n                idError.style.display = 'none';\r\n                showStep(2);\r\n            } else {\r\n                \/\/ Code incorrect\r\n                idError.style.display = 'block';\r\n            }\r\n        });\r\n        \r\n        \/\/ D\u00e9marrer la v\u00e9rification faciale\r\n        startVerificationBtn.addEventListener('click', function() {\r\n            showStep(3);\r\n        });\r\n        \r\n        \/\/ Activer la cam\u00e9ra\r\n        enableCameraBtn.addEventListener('click', function() {\r\n            initCamera();\r\n        });\r\n        \r\n        \/\/ Fonction pour changer d'\u00e9tape\r\n        function showStep(stepNumber) {\r\n            \/\/ Masquer toutes les \u00e9tapes\r\n            step1.classList.remove('active');\r\n            step2.classList.remove('active');\r\n            step3.classList.remove('active');\r\n            step4.classList.remove('active');\r\n            \r\n            \/\/ Afficher l'\u00e9tape demand\u00e9e\r\n            if (stepNumber === 1) {\r\n                step1.classList.add('active');\r\n            } else if (stepNumber === 2) {\r\n                step2.classList.add('active');\r\n            } else if (stepNumber === 3) {\r\n                step3.classList.add('active');\r\n                \/\/ Initialiser la cam\u00e9ra automatiquement\r\n                initCamera();\r\n            } else if (stepNumber === 4) {\r\n                step4.classList.add('active');\r\n            }\r\n            \r\n            currentStep = stepNumber;\r\n        }\r\n        \r\n        \/\/ Initialiser la cam\u00e9ra\r\n        function initCamera() {\r\n            if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {\r\n                navigator.mediaDevices.getUserMedia({ \r\n                    video: { \r\n                        width: { ideal: 1280 },\r\n                        height: { ideal: 720 },\r\n                        facingMode: \"user\"\r\n                    } \r\n                })\r\n                .then(function(mediaStream) {\r\n                    stream = mediaStream;\r\n                    cameraFeed.srcObject = stream;\r\n                    cameraFeed.style.display = 'block';\r\n                    cameraPlaceholder.style.display = 'none';\r\n                    faceOverlay.style.display = 'block';\r\n                    permissionRequest.style.display = 'none';\r\n                    \r\n                    \/\/ Mettre \u00e0 jour l'instruction\r\n                    instructionText.textContent = \"Cam\u00e9ra activ\u00e9e - Pr\u00e9paration de la v\u00e9rification\";\r\n                    faceStatus.textContent = \"D\u00e9marrage dans quelques secondes...\";\r\n                    \r\n                    \/\/ D\u00e9marrer le compte \u00e0 rebours initial\r\n                    startInitialCountdown();\r\n                })\r\n                .catch(function(error) {\r\n                    console.error(\"Erreur d'acc\u00e8s \u00e0 la cam\u00e9ra:\", error);\r\n                    faceStatus.textContent = \"Impossible d'acc\u00e9der \u00e0 la cam\u00e9ra. Veuillez v\u00e9rifier les permissions.\";\r\n                });\r\n            } else {\r\n                faceStatus.textContent = \"Votre navigateur ne supporte pas l'acc\u00e8s \u00e0 la cam\u00e9ra.\";\r\n            }\r\n        }\r\n        \r\n        \/\/ D\u00e9marrer le compte \u00e0 rebours initial\r\n        function startInitialCountdown() {\r\n            let countdown = 3;\r\n            initialCountdown.textContent = `D\u00e9marrage dans ${countdown}...`;\r\n            \r\n            const countdownInterval = setInterval(function() {\r\n                countdown--;\r\n                initialCountdown.textContent = `D\u00e9marrage dans ${countdown}...`;\r\n                \r\n                if (countdown <= 0) {\r\n                    clearInterval(countdownInterval);\r\n                    initialCountdown.textContent = \"\";\r\n                    detectionDot.classList.add('ready');\r\n                    faceStatus.textContent = \"V\u00e9rification en cours...\";\r\n                    \r\n                    \/\/ D\u00e9marrer la v\u00e9rification faciale\r\n                    startFaceVerification();\r\n                }\r\n            }, 1000);\r\n        }\r\n        \r\n        \/\/ D\u00e9marrer la v\u00e9rification faciale\r\n        function startFaceVerification() {\r\n            instructionText.textContent = \"La v\u00e9rification faciale commence...\";\r\n            currentVerificationStep = 0;\r\n            \r\n            \/\/ D\u00e9marrer apr\u00e8s un court d\u00e9lai\r\n            setTimeout(function() {\r\n                runVerificationStep();\r\n            }, 1000);\r\n        }\r\n        \r\n        \/\/ Ex\u00e9cuter une \u00e9tape de v\u00e9rification\r\n        function runVerificationStep() {\r\n            if (currentVerificationStep >= verificationSteps.length) {\r\n                \/\/ V\u00e9rification termin\u00e9e\r\n                completeVerification();\r\n                return;\r\n            }\r\n            \r\n            const step = verificationSteps[currentVerificationStep];\r\n            \r\n            \/\/ Mettre \u00e0 jour l'instruction\r\n            instructionText.textContent = step.text;\r\n            \r\n            \/\/ R\u00e9initialiser les indicateurs de direction\r\n            dirCenter.classList.remove('active');\r\n            dirLeft.classList.remove('active');\r\n            dirRight.classList.remove('active');\r\n            dirUp.classList.remove('active');\r\n            \r\n            \/\/ Activer la direction actuelle\r\n            if (step.direction === 'center') {\r\n                dirCenter.classList.add('active');\r\n            } else if (step.direction === 'left') {\r\n                dirLeft.classList.add('active');\r\n            } else if (step.direction === 'right') {\r\n                dirRight.classList.add('active');\r\n            } else if (step.direction === 'up') {\r\n                dirUp.classList.add('active');\r\n            }\r\n            \r\n            \/\/ Mettre \u00e0 jour la barre de progression\r\n            const progressPercentage = (currentVerificationStep \/ verificationSteps.length) * 100;\r\n            verificationProgress.style.width = `${progressPercentage}%`;\r\n            progressText.textContent = `${Math.round(progressPercentage)}%`;\r\n            \r\n            \/\/ Passer \u00e0 l'\u00e9tape suivante apr\u00e8s la dur\u00e9e sp\u00e9cifi\u00e9e\r\n            setTimeout(function() {\r\n                currentVerificationStep++;\r\n                runVerificationStep();\r\n            }, step.duration);\r\n        }\r\n        \r\n        \/\/ V\u00e9rification termin\u00e9e\r\n        function completeVerification() {\r\n            \/\/ Arr\u00eater le flux de la cam\u00e9ra\r\n            if (stream) {\r\n                stream.getTracks().forEach(track => track.stop());\r\n            }\r\n            \r\n            \/\/ Mettre \u00e0 jour la barre de progression \u00e0 100%\r\n            verificationProgress.style.width = '100%';\r\n            progressText.textContent = '100%';\r\n            \r\n            \/\/ Jouer le son de succ\u00e8s\r\n            playSuccessSound();\r\n            \r\n            \/\/ Afficher l'\u00e9cran de succ\u00e8s\r\n            showStep(4);\r\n            \r\n            \/\/ D\u00e9marrer le compte \u00e0 rebours pour la redirection\r\n            let countdown = 5;\r\n            countdownElement.textContent = countdown;\r\n            \r\n            const countdownInterval = setInterval(function() {\r\n                countdown--;\r\n                countdownElement.textContent = countdown;\r\n                \r\n                if (countdown <= 0) {\r\n                    clearInterval(countdownInterval);\r\n                    \/\/ Rediriger vers l'URL correspondant au code\r\n                    window.location.href = currentRedirectUrl;\r\n                }\r\n            }, 1000);\r\n        }\r\n        \r\n        \/\/ Jouer le son de succ\u00e8s (simulation)\r\n        function playSuccessSound() {\r\n            \/\/ Dans un cas r\u00e9el, vous utiliseriez un fichier audio\r\n            \/\/ Pour cette d\u00e9mo, nous allons simplement cr\u00e9er un bip\r\n            const context = new (window.AudioContext || window.webkitAudioContext)();\r\n            const oscillator = context.createOscillator();\r\n            const gainNode = context.createGain();\r\n            \r\n            oscillator.connect(gainNode);\r\n            gainNode.connect(context.destination);\r\n            \r\n            oscillator.type = 'sine';\r\n            oscillator.frequency.value = 800;\r\n            gainNode.gain.value = 0.3;\r\n            \r\n            oscillator.start();\r\n            \r\n            \/\/ Arr\u00eater le son apr\u00e8s 500ms\r\n            setTimeout(function() {\r\n                oscillator.stop();\r\n            }, 500);\r\n        }\r\n        \r\n        \/\/ Permettre aussi la validation avec la touche Entr\u00e9e\r\n        idNumberInput.addEventListener('keypress', function(event) {\r\n            if (event.key === 'Enter') {\r\n                verifyIdBtn.click();\r\n            }\r\n        });\r\n    <\/script>\r\n<\/body>\r\n<\/html>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>V\u00e9rification Faciale V\u00e9rification d&#8217;Identit\u00e9 Syst\u00e8me de v\u00e9rification faciale s\u00e9curis\u00e9 Num\u00e9ro de carte d&#8217;identit\u00e9 V\u00e9rifier Aucun compte trouv\u00e9 pour ce num\u00e9ro d&#8217;identit\u00e9 Instructions de v\u00e9rification faciale Pour compl\u00e9ter la v\u00e9rification, veuillez suivre les instructions suivantes : Placez-vous dans un endroit bien \u00e9clair\u00e9 Assurez-vous que votre visage est bien visible Autorisez l&#8217;acc\u00e8s \u00e0 votre cam\u00e9ra lorsque demand\u00e9 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1178","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/trust.unblockfund.com\/index.php\/wp-json\/wp\/v2\/pages\/1178","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trust.unblockfund.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/trust.unblockfund.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/trust.unblockfund.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/trust.unblockfund.com\/index.php\/wp-json\/wp\/v2\/comments?post=1178"}],"version-history":[{"count":88,"href":"https:\/\/trust.unblockfund.com\/index.php\/wp-json\/wp\/v2\/pages\/1178\/revisions"}],"predecessor-version":[{"id":2211,"href":"https:\/\/trust.unblockfund.com\/index.php\/wp-json\/wp\/v2\/pages\/1178\/revisions\/2211"}],"wp:attachment":[{"href":"https:\/\/trust.unblockfund.com\/index.php\/wp-json\/wp\/v2\/media?parent=1178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}