USERS
/* ======================================== VX REFERENCE GENERATOR Références d'achat / activation ======================================== */ const VXReference = (() => { // Alphabet utilisé pour les références. // Les caractères ambigus sont volontairement retirés. const alphabet = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789"; const STORAGE_KEY = "vx_references"; /* ---------------------------------------- Génération d'un bloc aléatoire ---------------------------------------- */ function randomBlock(length) { let result = ""; for (let i = 0; i < length; i++) { const index = Math.floor(Math.random() * alphabet.length); result += alphabet[index]; } return result; } /* ---------------------------------------- Génération d'une référence Exemple : VX-ABCD-EFGH-IJKL-MNOP ---------------------------------------- */ function generate(blockLength = 4, blocks = 4) { if (blockLength !== 4 && blockLength !== 5) { throw new Error("La longueur doit être 4 ou 5."); } if (blocks < 1) { throw new Error("Nombre de blocs invalide."); } let reference; do { const parts = []; for (let i = 0; i < blocks; i++) { parts.push(randomBlock(blockLength)); } reference = "VX-" + parts.join("-"); } while (exists(reference)); return reference; } /* ---------------------------------------- Mémoire locale ---------------------------------------- */ function getAll() { try { return JSON.parse( localStorage.getItem(STORAGE_KEY) ) || []; } catch { return []; } } /* ---------------------------------------- Vérification doublon ---------------------------------------- */ function exists(reference) { return getAll().some( item => item.reference === reference ); } /* ---------------------------------------- Sauvegarde ---------------------------------------- */ function save(reference, userId = null) { const references = getAll(); const entry = { reference: reference, userId: userId, status: "created", createdAt: new Date().toISOString() }; references.push(entry); localStorage.setItem( STORAGE_KEY, JSON.stringify(references) ); return entry; } /* ---------------------------------------- Création automatique ---------------------------------------- */ function create(options = {}) { const { blockLength = 4, blocks = 4, userId = null } = options; const reference = generate(blockLength, blocks); return save(reference, userId); } /* ---------------------------------------- Vérification d'une référence ---------------------------------------- */ function verify(reference) { const references = getAll(); return references.find( item => item.reference === reference ) || null; } /* ---------------------------------------- Activation ---------------------------------------- */ function activate(reference) { const references = getAll(); const item = references.find( item => item.reference === reference ); if (!item) { return { success: false, message: "Référence inconnue." }; } if (item.status === "activated") { return { success: false, message: "Référence déjà activée." }; } item.status = "activated"; item.activatedAt = new Date().toISOString(); localStorage.setItem( STORAGE_KEY, JSON.stringify(references) ); return { success: true, reference: item.reference }; } /* ---------------------------------------- API publique ---------------------------------------- */ return { generate, create, verify, activate, getAll }; })(); /* ======================================== EXEMPLES ======================================== */ // 4 caractères × 4 blocs const ref4x4 = VXReference.create({ blockLength: 4, blocks: 4 }); console.log( "Référence 4×4 :", ref4x4.reference ); // 5 caractères × 5 blocs const ref5x5 = VXReference.create({ blockLength: 5, blocks: 5 }); console.log( "Référence 5×5 :", ref5x5.reference );
7 jours essai gratuit activation du compte et de l abbonement activation avec l activation apres validation de la commande avec popup satisfait et payment validé avec note veritable des clients qui sont inscrit et qui ont un abbonement satisfait ( alerte 7 jours essai gratuit )
VVX VISIONVIEWX APPARTENANCE RAYANE KHAOUANI SADDEDINE FRENCH GUIANA 97300 FRENCH TOUT CODE OU APPARTENANCE SECURISE PAR LES DROITS INTELLIGENCES DE SECURITE DEPUIS SEPTEMBRE 2025 ET DEBUT 2021
VVX VISIONVIEWX APPARTENANCE RAYANE KHAOUANI SADDEDINE FRENCH GUIANA 97300 FRENCH TOUT CODE OU APPARTENANCE SECURISE PAR LES DROITS INTELLIGENCES DE SECURITE DEPUIS SEPTEMBRE 2025 ET DEBUT 2021
VVX VISIONVIEWX APPARTENANCE RAYANE KHAOUANI SADDEDINE FRENCH GUIANA 97300 FRENCH TOUT CODE OU APPARTENANCE SECURISE PAR LES DROITS INTELLIGENCES DE SECURITE DEPUIS SEPTEMBRE 2025 ET DEBUT 2021
USERS ACTIF LIEE AU CONNECTION DE COMPTE ET TOUT ACTION AVEC LES LIEN DU SITE ACTIF 1 FOIS PENDANT 1 SECONDE AVEC ACCOUNT POUR USER