=== SitePass Pro ===
Contributors: tonsiteMA
Tags: coming soon, maintenance mode, private preview, elementor, vip access
Requires at least: 6.0
Tested up to: 6.6
Requires PHP: 8.1
Stable tag: 1.0.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Private Preview & Coming Soon for WordPress — protégez votre site en construction et donnez un accès VIP sécurisé par code à vos clients.

== Description ==

SitePass Pro permet de mettre facilement un site WordPress en :

* Coming Soon
* Site en construction
* Maintenance
* Site privé / prévisualisation

Les visiteurs normaux voient une page personnalisée conçue avec Elementor (Free ou Pro). Les personnes autorisées (client, agence, direction, partenaire) accèdent au vrai site via un **code VIP** temporaire.

= Fonctionnalités principales =

* Compatible Elementor Free (aucune dépendance à Elementor Pro)
* Widget Elementor dédié « VIP Access » entièrement personnalisable (contenu, style, popup)
* Shortcode `[sitepass_vip]` pour Gutenberg ou tout autre constructeur
* Page Coming Soon rendue de façon autonome : aucun header/footer/menu du thème, compatible Elementor Canvas et tous les templates
* Éditeur et prévisualisation Elementor accessibles normalement aux personnes autorisées, même en mode Coming Soon
* Codes VIP illimités : expiration du code, limite d'utilisation, activation/désactivation
* **Durée d'accès individuelle par code VIP** (15 min à 7 jours, ou illimitée) — distincte de l'expiration du code
* Codes générés de façon cryptographiquement sûre ; vérification par hash (password_verify). Le code reste masqué à l'écran dans la liste, mais copiable en un clic à tout moment (bouton 📋)
* Code VIP affiché clairement et copiable en un clic immédiatement après sa création
* Sessions VIP sécurisées côté serveur (cookie HttpOnly, token aléatoire 256 bits)
* Protection d'URL côté serveur : impossible de contourner le Coming Soon en visitant une URL directe
* Protection anti brute-force configurable (tentatives max, durée de blocage)
* Journal de sécurité (codes toujours masqués, IP anonymisée et optionnelle)
* Interface d'administration moderne : tableau de bord, réglages, codes VIP, journal, aide
* Aucune dépendance externe obligatoire, aucun compte ou API tierce requis
* Léger : aucun impact lorsque le mode Coming Soon est désactivé

== Installation ==

1. Téléversez le dossier `sitepass-pro` dans `/wp-content/plugins/` ou installez le fichier ZIP via **Extensions → Ajouter → Téléverser une extension**.
2. Activez le plugin depuis le menu **Extensions**.
3. Rendez-vous dans **SitePass Pro → Réglages**.

== Créer une page Coming Soon avec Elementor ==

1. Créez une nouvelle page WordPress.
2. Modifiez-la avec Elementor.
3. Ajoutez le widget **VIP Access** (catégorie « SitePass Pro ») à l'endroit désiré.
4. Personnalisez le contenu et le style depuis le panneau Elementor.
5. Publiez la page.
6. Dans **SitePass Pro → Réglages**, sélectionnez cette page comme *Page Coming Soon*.
7. Activez le mode souhaité (Coming Soon / Maintenance / Construction).

== Créer un code VIP ==

1. Allez dans **SitePass Pro → Codes VIP**.
2. Cliquez sur **Créer le code** (laissez le champ code vide pour une génération automatique sécurisée).
3. Définissez une expiration et/ou une limite d'utilisation si besoin.
4. Copiez le code affiché **immédiatement** : il ne sera plus jamais visible en clair par la suite.
5. Transmettez ce code à la personne autorisée.

== Gestion des sessions ==

Après validation d'un code, le visiteur reçoit un cookie sécurisé (HttpOnly, signé par un token aléatoire) valable pour la durée configurée dans les réglages. L'administrateur peut à tout moment déconnecter toutes les sessions VIP actives depuis le tableau de bord.

== Sécurité ==

* Toutes les actions d'administration utilisent des nonces WordPress et des vérifications de capability (`manage_options`).
* Les entrées utilisateur sont systématiquement nettoyées (`sanitize_*`) et échappées à l'affichage (`esc_html`, `esc_attr`, `esc_url`).
* Les requêtes SQL personnalisées utilisent exclusivement `$wpdb->prepare()`.
* La vérification d'un code soumis par un visiteur passe par `password_hash()` / `password_verify()` — jamais de MD5/SHA1 nu ni de comparaison SQL directe. Le code est également conservé afin de rester copiable à tout moment depuis SitePass Pro → Codes VIP (masqué à l'écran, révélé uniquement au clic sur « Copier ») ; gardez donc l'accès à cette page réservé aux personnes de confiance.
* Une protection anti brute-force limite les tentatives répétées par adresse IP.

== Compatibilité cache ==

La vérification d'accès s'exécute côté serveur à chaque requête. Si un cache de page complet (plugin de cache, reverse proxy, CDN) est actif, configurez-le pour **ne pas servir de version en cache aux visiteurs porteurs du cookie `sitepass_vip_token`**, ou désactivez temporairement le cache de page pendant la phase Coming Soon.

== Dépannage ==

**Le widget n'apparaît pas dans Elementor**
Vérifiez qu'Elementor est actif, puis régénérez les fichiers CSS depuis Elementor → Outils.

**Un code VIP ne fonctionne pas**
Consultez SitePass Pro → Journal de sécurité pour connaître la raison exacte (expiré, désactivé, limite atteinte, invalide).

== Changelog ==

= 1.1.3 =
* Le champ de saisie du code VIP est désormais masqué comme un mot de passe (••••), avec un bouton œil pour l'afficher temporairement si besoin.

= 1.1.2 =
* Popup VIP côté visiteur : après un code correct, un véritable écran de succès remplace désormais le simple message texte — coche tracée au trait, titre « Bienvenue » (personnalisable dans le widget Elementor), fine barre de progression avant la redirection. Design sobre, sans emoji ni effet superflu.

= 1.1.1 =
* Refonte approfondie du back-office : corrections de bugs visuels de la version 1.1.0 (pastille de statut dupliquée, cases à cocher du tableau transformées par erreur en interrupteurs, bouton débordant de sa carte).
* Réglages regroupés en panneaux visuels distincts (Général, Accès VIP, Anti brute-force, Confidentialité, Désinstallation) avec icône et description.
* Tableau de bord réorganisé : cartes avec icône et actions alignées en pied de carte, section Démarrage rapide / Diagnostic en deux colonnes.
* Page Aide restructurée en panneaux et FAQ accordéon repliable.
* Interrupteurs modernes limités aux réglages on/off ; les cases à cocher de sélection dans les tableaux gardent leur apparence standard.
* Pagination, notices et bandeaux d'astuce harmonisés avec le reste de l'interface.

= 1.1.0 =
* Refonte visuelle complète de l'administration : en-tête sombre dégradé (indigo → cyan), cartes minimalistes avec accent au survol, badges de statut à pastille, interrupteurs modernes pour les réglages, tableau et champs de formulaire redessinés. Aucun changement fonctionnel — uniquement l'interface.

= 1.0.7 =
* Correction du bug racine, identifié grâce à l'auto-diagnostic ajouté en 1.0.6 : la table de base de données des sessions VIP (`wp_sitepass_vip_sessions`) n'était en réalité jamais créée, ni à l'activation ni lors des mises à jour — un oubli présent depuis la toute première version. Conséquence : le code VIP était accepté et le cookie posé, mais la vérification de session échouait systématiquement ensuite (table inexistante), renvoyant l'utilisateur vers Coming Soon malgré un code valide. La table est maintenant créée automatiquement au chargement du plugin — aucune action manuelle requise après avoir remplacé les fichiers.

= 1.0.6 =
* Ajout d'un auto-diagnostic dans SitePass Pro → Tableau de bord (« Lancer le test de session VIP ») : crée un jeton jetable et vérifie immédiatement, côté serveur, sans cookie ni redirection, s'il est reconnu valide. Permet de confirmer directement que le code exécuté sur le serveur correspond bien à la version installée (utile en cas de cache OPcache/PHP qui garderait une ancienne version en mémoire après une mise à jour de fichiers).
* Le numéro de version du plugin est désormais affiché dans l'en-tête du tableau de bord.

= 1.0.5 =
* Correction critique : la vérification de la session VIP comparait une date stockée en UTC via `strtotime()` (fuseau local du serveur), ce qui pouvait faire apparaître une session tout juste créée comme déjà expirée sur un serveur dont le fuseau PHP n'est pas UTC — bloquant l'accès malgré un code VIP valide. La comparaison se fait désormais en SQL, en cohérence avec le reste du plugin.

= 1.0.4 =
* Ajout d'en-têtes de cache renforcés (Vary: Cookie, Cache-Control) sur la page Coming Soon pour limiter les cas où un cache de page/CDN mal configuré continue d'afficher Coming Soon à un visiteur VIP pourtant autorisé. Voir la section « Compatibilité cache » de l'aide si le problème persiste : il faut alors configurer le cache pour exclure le cookie `sitepass_vip_token`.

= 1.0.3 =
* Les codes VIP restent désormais copiables à tout moment depuis SitePass Pro → Codes VIP (bouton 📋 dans la liste, code masqué à l'écran), et non plus uniquement lors de leur création. Note : le code est de ce fait conservé sous une forme récupérable en base de données (plus seulement haché) — réservez l'accès à cette page aux personnes de confiance.

= 1.0.2 =
* Correction critique : la mise à jour du schéma de base de données ne s'exécutait jamais (hook mal enregistré), ce qui pouvait faire échouer silencieusement la création de codes VIP après une mise à jour du plugin sans réactivation. Un simple aller-retour désactivation/réactivation répare une installation déjà touchée.
* Le code VIP créé reste visible et copiable pendant 5 minutes, y compris après un rafraîchissement de la page.
* Message d'erreur explicite si la création d'un code échoue réellement.
* Détection Elementor plus tolérante pour le rendu de la page Coming Soon.

= 1.0.1 =
* Correction critique : la page Coming Soon est désormais rendue de façon totalement autonome (sans header, footer ni menu du thème), y compris pour les pages configurées en Elementor Canvas.
* L'éditeur et la prévisualisation Elementor restent accessibles aux personnes autorisées même en mode Coming Soon.
* La durée d'accès VIP est désormais définie individuellement pour chaque code (suppression du réglage global correspondant).
* Confirmation visuelle modernisée et copie en un clic du code VIP immédiatement après sa création.
* Rafraîchissement visuel de l'administration (cartes, badges, état vide).

= 1.0.0 =
* Version initiale.
