[plugin] VIP_ZONE . Options de privatisation de votre PluXml

22 oct. modifié dans Plugins

Suite et inspiration de https://forum.pluxml.org/discussion/7048/securite-limiter-lacces-au-blog ou j'avais proposer un squelette de plugin.

Voici ce squelette étoffé, plus facile d'utilisation et renommer dans l'admin en 'Espace Privé'. (De PluXml 5.8.4 à 5.8.7)

Sera t-il compatible avec un PluXml > 5.8.7 ?, je ne sais pas .(il sera tester à la sortie des prochaines versions, pour l'instant un test de MAJ pour pluxml 6.0 fonctionne, ... temporairement en attendant la version stable officiel )

  1. https://github.com/gcyrillus/PLX_VIP_ZONE/
  2. https://github.com/gcyrillus/PLX_VIP_ZONE/archive/refs/heads/main.zip

Des tests Utilisateurs sont encore les bienvenus pour soulever des bugs, des incohérences, des fonctions inutiles ou manquantes, ...

Sa description (v2.0)


PLX_VIP_ZONE intitulé Espace Privé

Plugin pour PluXml , ajoute la gestion d'espace privé ,blog,catégories et articles ou pages statiques aux choix, inspiré du précédent squelette: https://github.com/gcyrillus/plx-log-visitor

Le plugin "Espace Privée" permet de rendre tout ou partie de votre site accessible uniquement à des utilisateurs bénéficiant d'un accès V.I.P..

A l'activation, un nouveau profil apparait pour vos utilisateurs. Vous pouvez ajouter un utilisateur qui aura accès aux zones privatisés sans avoir de droits pour accéder à la partie administration de votre site.

La seule page de l'administration qui lui sera accessible sera la page authentification.

Comme tout les plugins, dés l'activation il vous faut configurer votre plugin de façon à ce qu'il fonctionne entièrement.

Le plugin à la première configuration va faire un backup de votre fichier utilisateurs (user.xml => user.xml.back) et créer un fichier CSV (username.csv dans le dossier du plugin) avec ses entêtes, celui-ci vous permettra d'ajouter par lot des utilisateur VIP. Voir plus bas pour le détail

Configuration

Le plugin vous permet de choisir entre plusieurs configuration d'espaces V.I.P., Vous pouvez opter pour rendre privé:

  • l'espace Blog, si votre page d’accueil est une page statique sinon c'est votre page d’accueil ! ;) ,
  • les pages Catégories et Articles ,
  • les pages Statiques
  • ou désactiver tout les espaces privée en sélectionnant Aucune (valeur par défaut à l'activation du plugin)
  • Il y a aussi la possibilité de créer uniquement des pages statiques privée dans un groupe dédié.
Traitement par lot de nouveaux utilisateurs V.I.P.

Le traitement par lot s'effectue sur la structure d'un fichier au format CSV, ce type de fichier peut-être ouvert et éditer avec de nombreux éditeurs de texte ou de feuille de calcul. Les 2 programmes plus connus du grand publics sont Excel(MS) et OpenOffice calc. Le caractères de séparation des champs utilisé est le point virgule ;.

Vous pouvez:
1. Télécharger le fichier username.csv et l’éditer dans votre programme favori en ajoutant vos utilisateurs ligne par ligne et en respectant les colonnes et son format (caractère de champ ;), puis en le renvoyant sur le serveur. Un lien de téléchargement est affiché dans la page de configuration.
2. Renvoyer sur le serveur le fichier modifié , il sera traité automatiquement puis vidé.
3. Directement dans la page configuration du plugin dans l’éditeur affiché en respectant la syntaxe des entêtes en première ligne , ligne par ligne en séparant chaque champs (au nombre de quatre) d'une double virgule ; en faisant la saisie au clavier. (l’éditeur embarque https://github.com/codemirror pour rendre l'édition en ligne plus confortable)

Note . En cas de doublon, un message s'affiche indiquant le champ et la ligne à corrigé.

résumé et info à propos de l'édition 'Ajout utilisateurs'
  1. Conservez les entêtes de la première ligne du fichier CSV: Login; Name; Password; Email; Infos . Cette ligne n'est pas enregistrée comme Utilisateur mais vous rappelle la syntaxe à respecter.
  2. Il y a quatre champs séparés par un point virgule, ces champs vont créer les utilisateurs avec leur adresse mail et mot de passe respectif .
  3. Le mot de passe sera crypté à l'enregistrement, si il est perdu par l'utilisateur et selon la configuration native de votre PluXml, son adresse mail si valide pourra lui servir à en créer un nouveau.
  4. L'enregistrement ne gère pas les doublons, mais ne finalisera pas un traitement en lot si une ligne est incomplète ou comporte une erreur de syntaxe, le n° de lignes est alors indiqué .
  5. Lorsque vous désactiver le Plugin, tous vos utilisateurs V.I.P., n'ayant plus d’accès privé réservé, voient leur compte désactivé afin de ne plus apparaitre dans la partie 'Comptes Utilisateurs' de l'administration.
  6. Lorsque vous activer le Plugin, tous les comptes V.I.P. déjà enregistrés seront réactivés.
  7. Pour effacer ou modifier un Utilisateur, cela se passe par la page 'Comptes Utilisateurs' de l'administration.
  8. Un lien de déconnexion est ajouté au menu principal lorsque vous êtes authentifié, gestion des langues possibles: dispo: fr et en .
  9. Le titre du formulaire de connexion est personnalisé.
  10. Un VIP qui se déconnecte est renvoyé sur la page d'accueil
  11. Le plugin vérifie la compatibilité de la configuration de son mode privée avec la configuration de PluXml. (blog ou pas blog ? )
  12. Ajout d’icônes devant les contenus privatisés si non connecté. (fontawesome 5).
  13. Cache le contenu des articles et des commentaires si non connecté.
  14. Ajout de page statique privatisée dans un groupe (VIP).
    Pour utiliser ces pages , il faut les éditer dans la page d'administration "pages statiques" et les activer pour les finaliser et les afficher sur le site.
  15. A la désactivation du plugin , les pages statiques privées du groupe VIP sont aussi désactivées.
  16. A l'activation du plugin, si des pages statiques privatisées dans le groupe VIP existent, elles sont réactivées.
  17. Ajout du champs infos dans la gestion via le fichier CSV (ou édition nouvelle utilisateur dans la page configuration).
  18. Vérification des doublons sur les champs login, name et email.
  19. option de repositionnement du plugin en première position au chargements des plugins d'un simple clique.

Note à l'installation et sa position dans la page d'administration des plugins.

Selon l'ordre du plugin dans la page http://votrePluXml.com/core/admin/parametres_plugins.php si vous utilisez un autre plugin , comme MySearch: moteur de recherche, qui s'ajoute en lien dans le menu,ce type de plugin sera considéré comme une page statique et sera privatisé si l'option de configuration est calé sur Pages Statiques .
Pour garder les pages de ce type de plugin en accès libre, il faut que le plugin `vip_zone , intitulé 'Espace Privée' soit placé devant. A défaut, tous les plugins placés derrière et se greffant au menu seront considérés comme des pages statiques privatisables et accessibles seulement après connexion.

Pour replacer le plugin en amont de vos autre plugins, un glisser/déposer suffit ou bien indiquez le numéro de position -1 pour le remettre en tête de liste,. En fin, sauvegardez la modification de la liste des plugins. **Vous pouvez repassé le plugin en première position dans la page de configuration/administration du plugin.


Un fichier username.csv de 509 utilisateurs fictifs est inclus dans le dossier vip_zone/test-CSV_file du plugin pour vos tests. Ce dossier n'est pas requis au bon fonctionement du plugin.

Ce fichier comportent des erreurs qu'un message vous notifiera, il vous suffit de vous rendre au(x) numéro(s) de ligne(s) indiquée(s) et de faire la correction dans l'éditeur texte du plugin.

Aprés vos tests avec ce fichier fictif, vous pouvez effacer le fichier users.xml et renommer le fichier users.xml.back en users.xml pour retrouver votre liste d'utilisateurs d'origine.


Remise en ligne et test de mon vieux site re7net.com . le design et moi on ne sait ... s'est jamais reconnu en fait! mais je fait des efforts.

Mots clés:

Réponses

  • AmadeusAmadeus Member

    Bonjour à toutes et tous,

    Bravo gcyrillus-nomade pour ce greffon.
    J'ai chargé le greffon comme indiqué dans ma dernière intervention ( https://forum.pluxml.org/discussion/7048/securite-limiter-lacces-au-blog ) dans un PluXml 5.8.7, maquette construite avec des pages statiques et le blog (les pages article et catégories ainsi que le pied de page ont été modifiés comme indiqué dans tes instructions).

    Dans la configuration du greffon, le blog est sélectionné, validé. La sauvegarde des données users existe bien. Aucun problème.

    La liste username.csv conforme au format (intitulés et ordre des colonnes) apparaît bien mais la validation est impossible. Une page blanche affiche un lien pour revenir à la page des plugins et un message annonce: Erreur pendant l'enregistrement du fichier user.xml/username.csv
    J'ai fait un essai en enlevant tous les accents sur les noms ou les majuscules. Ça ne change rien.

    De retour dans la partie administration, un clic sur "Retour au site" ou "Blog" affiche une page totalement blanche et je dois retourner en arrière pour désactiver le greffon. L'affichage public redevient normal.

    Le problème viendrait-il de la traduction CSV vers XML ?

  • 29 sept. modifié

    Bonjour,

    il y avait deux coquilles sur le chemin, l'une sur celui de sauvegarde du fichier username.csv et l'autre dans la class du plugin (reliquat du précédent plugin) . => corrigés.


    MAJ 28/09/-23h00
    1. download d'un fichier username.csv vide avec les entêtes seuls pour l'éditer en local avec votre programme favori (MS ou OpenOffice ou autre).
    2. upload de votre fichier username.csv pour faire l'ajout des utilisateurs en lot.
    3. Un bouton de déconnexion est inséré en fin du menu principal X
    MAJ 29/09/2021
    4. ajout d'un fichier test de 509 utilisateurs fictifs pour vos tests.


    Note

    Il n'est pas nécessaire de modifier le thème, le plugin se charge de faire la redirection vers la page authentification sur les zones configurées en privées.

    Cdt,
    GC

    Remise en ligne et test de mon vieux site re7net.com . le design et moi on ne sait ... s'est jamais reconnu en fait! mais je fait des efforts.

  • AmadeusAmadeus Member

    Bonjour à toutes et tous,

    Bonjour gcyrillus-nomade

    Je poursuis mes essais avec Firefox, Pale Moon et IE en local avec MAMP, la dernière version de PluXml et le thème standard non modifié comme indiqué.

    Mon retour d'expérience:

    Aucun problème pour charger et configurer le plugin.

    Ma liste d'utilisateurs fictifs au format CSV est téléchargée sans incident et la liste des utilisateurs dans l'administration affiche tous les nouveaux venus avec leur statut VIP.

    Cette liste disparaît comme prévu avec la désactivation et revient avec la réactivation du greffon mais le plugin crée un doublon sur le premier nom de la liste.
    La déconnexion de l'administrateur me ramène à la page d'identification habituelle.
    Le retour à la page d'accueil du site est normal.

    En revanche:
    Toutes les pages statiques du menu et le blog me renvoient une erreur 404.
    Si je reviens à la page d'identification et que je rentre les infos (Id et PSW) de l'un quelconque des VIP enregistrés, la page ne se charge pas et les navigateurs me retournent tous la même information: le serveur redirige la requête d'une manière incorrecte (mauvaise redirection).

    Cependant:
    Le lien de déconnexion des VIP (disque rouge avec le X) apparaît bien dans le menu juste avant le blog qui est la zone privée du site.
    J'accède au blog (toutes les catégories, tous les articles) mais, à ce stade, rien n'indique si je suis connecté en tant que VIP ou admin et toutes les pages statiques du menu s'affichent elles aussi correctement.

    La déconnexion (disque rouge avec le X) provoque de nouveau une erreur 404 avec ce texte: The requested URL /core/admin/auth.php was not found on this server.

    Voilà. J'ai essayé de ne rien oublier

  • 6 oct. modifié

    Bonjour,

    Toutes les pages statiques du menu et le blog me renvoient une erreur 404.

    est ce en mode connecté ou non connecté? quel genre d'url as tu dans la barre d'adresse du navigateur ? (voir si point suivant une fois réglé corrige aussi ce problème).

    Si je reviens à la page d'identification et que je rentre les infos (Id et PSW) de l'un quelconque des VIP enregistrés, la page ne se charge pas et les navigateurs me retournent tous la même information: le serveur redirige la requête d'une manière incorrecte (mauvaise redirection).

    Si je comprend bien , tu te sert d'un serveur local , si tu as mis ton pluxml dans un sous-répertoire, alors c'est normal, je vais corrigé les liens et me servir de PLX_ROOT pour repartir de la racine de pluxml et pas de celle de ton serveur. (attend juste une mise à jour sur github , fichier concerné vip_zone.php )

    Le lien de déconnexion des VIP (disque rouge avec le X) apparaît bien dans le menu juste avant le blog qui est la zone privée du site.
    J'accède au blog (toutes les catégories, tous les articles) mais, à ce stade, rien n'indique si je suis connecté en tant que VIP ou admin et toutes les pages statiques du menu s'affichent elles aussi correctement.

    Non en effet, il n'y a que ce lien de déconnexion qui te fait savoir que tu est connecté sans indiqué les droits du visiteur. si tu le souhaites on peut faire en sorte de l'afficher que pour les VIP (nécessite juste un test sur le niveau du profil) . Cependant, il faudra être connecter pour accéder à ces pages. VIP ou Administrateur, c'est une section privatisée qui requiert une authentification . (pas de filtrage sur IP prévu pour passer outre)

    La déconnexion (disque rouge avec le X) provoque de nouveau une erreur 404 avec ce texte: The requested URL /core/admin/auth.php was not found on this server.

    Idem que précédemment.

    Cdt,
    GC

    Remise en ligne et test de mon vieux site re7net.com . le design et moi on ne sait ... s'est jamais reconnu en fait! mais je fait des efforts.

  • 8 oct. modifié

    @Amadeus Sans retour de ta part (mais d'autres) , j'ai continué à étoffé ce plugin et modifié son code de base entre deux réflexions et retour de bugs.
    Je reste bien sur curieux de ton avis pour ton usage personnel.
    Cette dernière version se présente pompeusement comme la 1.07 a des années de son squelette , enfin presque ;) https://github.com/gcyrillus/PLX_VIP_ZONE/archive/refs/heads/main.zip .
    Cdt

    Remise en ligne et test de mon vieux site re7net.com . le design et moi on ne sait ... s'est jamais reconnu en fait! mais je fait des efforts.

  • AmadeusAmadeus Member

    Bonjour gcyrillus-nomade,

    Je viens de charger la nouvelle version du greffon sur un PluXml 587 tout neuf pour voir les différences.

    Mes observations:
    1 - Le greffon fonctionne parfaitement tel quel! Il est installé en premier.
    2 - La mise en page de l'administration du greffon (configuration) est très propre. C'est pro!
    3 - La création d'un groupe de pages statiques privées ne pose aucun problème. On peut choisir la mise en page (normale ou pleine largeur) exactement comme pour les autres.

    Question:
    La fiche utilisateur dispose d'un champ supplémentaire (informations) qui n'est pas utilisé par le greffon. Pourrait-on inclure ce champ afin de l'ajouter aux colonnes du fichier CSV?
    Pour ma part, tous les utilisateurs (VIP) auraient une donnée de référence dans le champ "informations" ce qui ne devrait pas poser de problème d'absence de données.
    En revanche, d'autres utilisateurs du greffon qui n'en auraient pas l'utilité, devraient pouvoir laisser ce champ vide sans être bloqués par le signalement d'une erreur si le champ "informations" du CSV n'était pas utilisé pour tout ou partie de la liste VIP.

    Merci d'avoir développé ce greffon qui correspond exactement à ce que je cherchais pour l'école, PluXml s'étant imposé pour ses qualités de rapidité et de légèreté.
    C'est un beau travail.
    Bravo!

  • Bonjour,
    merci de ton retour , très élogieux pour le codeur du dimanche que je suis.
    J'avais eu un projet similaire il y a une dizaine d'année avec un PluXml et une classe de formation pour adulte, j'avais quelques idées de départ.

    J'ai ajouté la gestion du champs infos via l'admin du plugin et fichier CSV. Il sera rempli si quelque chose est trouvé.

    je met la modif ici https://github.com/gcyrillus/PLX_VIP_ZONE/archive/refs/heads/1.08.zip en attendant ton retour avant de la remonter, des fois qu'un bug se soit glisser durant la manip.

    Cdt

    Remise en ligne et test de mon vieux site re7net.com . le design et moi on ne sait ... s'est jamais reconnu en fait! mais je fait des efforts.

  • AmadeusAmadeus Member

    Bonjour gcyrillus-nomade,
    La liste des utilisateurs est mise à jour sans aucune erreur dans tous les cas mais le champs "infos" n'est pas rempli.
    J'ai essayé avec les têtes de colonnes habituelles du fichier CSV auxquelles j'ai ajouté la colonne "infos" avec/sans point-virgule final.
    J'ai remarqué dans le code de la page config.php ligne 270 qu'il manquait peut-être une information.
    En effet, si je me réfère aux lignes 264 et 267, l'information $line[quelque chose] est absente dans $infos->addCData(''); mais je ne suis pas codeur du tout!
    A+

  • Est tu sur d'avoir pris la bonne version ? (1.08) ou bien d'avoir bien écrasé la version précédente, car c'est à la ligne 39, puis 66,67 et 68 que le champ Infos est pris en compte si présent .

    https://github.com/gcyrillus/PLX_VIP_ZONE/archive/refs/heads/1.08.zip

    Remise en ligne et test de mon vieux site re7net.com . le design et moi on ne sait ... s'est jamais reconnu en fait! mais je fait des efforts.

  • AmadeusAmadeus Member

    Mille excuses gcyrillus-nomade, je n'étais pas dans la bonne fenêtre!
    Il y a des jours comme ça...

    Le geffon fonctionne parfaitement avec les versions 5.8.7 et 5.8.4 de PluXml.
    Chaque information est bien là où elle doit être.
    Encore une fois, bravo pour tout ce travail!
    Bonne fin de journée.

  • Super !
    juste à te signaler une mise à jour faite a la ligne 181 de config.php pour le numéro dans le nom de fichier pour la page statique privée que je n'avais pas mis à jour.

    C'est pour le fun que je l'ai fait et je suis heureux que cela te soit utile. Ce n'est, ni, ne sera mon métier. Je découvre régulièrement l'ampleur de mon ignorance, il me faut un point de départ pour éveiller ma curiosité et creuser , je ne suis vraiment pas le gars que tu veut engagé pour un boulot de production .

    Bonne continuation ;)

    Remise en ligne et test de mon vieux site re7net.com . le design et moi on ne sait ... s'est jamais reconnu en fait! mais je fait des efforts.

  • Infos . Une mise à jour permet de vérifier la validité des emails ainsi que les doublons sur les champs login, name et email.

    Remise en ligne et test de mon vieux site re7net.com . le design et moi on ne sait ... s'est jamais reconnu en fait! mais je fait des efforts.

Connectez-vous ou Inscrivez-vous pour répondre.