[plugin] plnExtendedJurisdiction - Juridiction étendue

GariGari Member
février 2016 modifié dans Plugins
Ce plugin, plutôt technique, a pour objectif de gérer une "brique de base" de gestion de la juridiction. Il embarque :
- La possibilité de créer et de gérer des comptes utilisateur
- La possibilité d'associer des profils (droits) à ces comptes
- Un formulaire de connexion côté "site"
- La possibilité de fusionner (fonctionnellemment parlant) les comptes du plugin avec ceux, standards, de pluXml
- La possibilité d'injecter les comptes en masse via fichiers CSV
- Une aide complète expliquant comme l'utiliser et l'interfacer avec d'autres plugins
- Une page côté "site" permettant aux utilisateurs de voir/modifier leurs mots de passe
- Un service d'affichage d'une page d'erreur de type "accès interdit" utilisant aisément par d'autres plugins

Seul, il n'a pas grand intérêt. Sa grande force est de permettre à d'autres plugins de s'adosser à ses services de gestion
des habilitations. Plusieurs intérêts majeurs :
- La sécurité liée à la gestion de la juridiction est toute entière extérieure aux autres plugins et située à un seul endroit : il suffit d'auditer le plugin plnExtendedJurisdiction pour s'assurer que la sécurité est correctement gérée.
- L'allégement de l'écriture des plugins ayant besoin de gestion de juridiction : plus besoin de s'en occuper, c'est géré par plnExtendedJurisdiction !
- Et surtout, une homogénéisation de la juridiction transverse aux plugins l'utilisant (si on a 3 plugins ayant besoin de juridiction, pas besoin de créer 3 méthodes différentes réclamant 3 créations de comptes, etc.).

Le plugin s'interface très facilement avec d'autres plugins : il offre un éventail de services sous forme de méthodes statiques.

Lien de téléchargement : plnExtendedJurisdiction v1.0.4

Si vous voulez le voir à l'oeuvre, il est utilisé (facultativement) par le plugin plnKikan et obligatoirement par le plugin plnPrivatePages.

Quelques captures d'écran :

- Les pages d'administration :

plnExtendedJurisdiction_admin_AccountList.png

plnExtendedJurisdiction_admin_NouveauCompte.jpg

plnExtendedJurisdiction_admin_AccountFileInjection.png

- La page de config :

plnExtendedJurisdiction_config.jpg

- Un (court) extrait de la page d'aide :

plnExtendedJurisdiction_Aide.png

A noter : ce plugin nécessite le plugin plnStaticPages

Réponses

  • Bonjour,
    je suis plutôt utilisateur de pluxml que développeur, donc je suis nul et je ne comprends comment faire pour utiliser ton plugin avec un autre plugin.
    Comment je peux intégrer ton plugin dans le plugin "adhésion" pour gérer les connexions ??

    Merci

    Jol5926
  • GariGari Member
    juin 2015 modifié
    Excellente question ! Malheureusement, ce n'est tout simplement pas prévu.

    En fait, si j'ai créé le plugin plxExtendedJurisdiction, c'est parce que justement j'ai remarqué qu'il y a plusieurs plugins proposés pour pluXml qui offrent une sorte de gestion de comptes privés (adhesion, mais aussi tous les plugins qui intègrent des mots de passe pour accéder à telle ou telle partie du site). Le problème, c'est que chacun de ces plugins gère son truc dans son coin, ainsi si on veut pouvoir profiter de plusieurs de ces plugins on se retrouve éventuellement à devoir gérer les habilitations à de nombreux endroits.

    Dans mes besoin de plugins personnels (plnPrivatePages, mais aussi plnKikan et bientôt plnCalendrier) je souhaitais pouvoir gérer les habilitations de manière unique. J'ai donc décidé de créer un plugin dédié à cela, qui offrirait des services de gestion des habilitations pour les plugins qui le voudraient (c'est donc au développeur du plugin d'intégrer plnExtendedJurisdiction, un utilisateur ne pourra pas le faire).

    Maintenant que mon plugin est fonctionnel, je l'utilise pour l'ensemble des mes plugins qui ont besoin de gestion des habilitations.

    Bien entendu, cela veut dire que, pour conserver le côté "unifié" de cette gestion des habilitations, il faudrait que tous les autres plugins ayant besoin du même genre de service s'appuient dessus. Bref, que "adhesion" s'appuie sur plnExtendedJurisdiction.

    Je ne pense pas que le mainteneur de "adhesion" va s'amuser à changer son code pour utiliser plnExtendedJurisdiction (même si ça me ferait plaisir ! ^^). Bref, à ce jour, je ne vois pas bien comment faire, d'autant que je ne connais pas du tout le fonctionnement interne de "adhesion" (en fait, au départ j'avais tenté de me brancher sur "adhesion" mais je débutais sur pluXml et je n'avais réussi à comprendre comment le faire fonctionner, je suis donc parti sur ma propre solution).
  • Hello Gari,
    comment faire pour injecter un fichier ?
    J'ai 21 personnes à entrer.
    J'ai vu dans l'admin "injecter un fichier"

    Merci
    Jol5926
  • Hello Gari,
    est-il possible d'avoir le fichier des comptes en xls ou numbers (mac) plutot qu'en ods ?
  • Salut,
    Oups, il me semblait avoir écrit un blabla d'aide pour l'injection... Je réalise que ce n'est pas le cas : pas bien !
    En l'occurrence (et de mémoire), il s'agit d'un fichier csv dont la première ligne doit contenir les entêtes des colonnes et les lignes suivantes les personnes à injecter (soit 22 lignes en tout dans ton cas).
    Les noms des colonnes doivent être nommés comme suit : "login", "password", "profil", "active"
    L'ordre des colonnes est indifférent, et on peut mettre d'autres colonnes sans rapport au milieu sans problème.
    Le délimiteur de champ doit être ",", ";" ou "|" au choix. Si un caractère est utilisé comme délimiteur, il ne doit pas se retrouver ailleurs.

    Dis-moi si ça marche !

    Pour l'export, je prévois de faire du csv de base (je ne peux pas créer de template xls ou mac, n'ayant ni mac ni windows).
  • dans la colonne "active" tu inscris quoi ?

    ok pour l'export en csv !
    je ne peux rien faire en ods
  • "active" = 1 ou 0, suivant si on veut que le compte soit actif ou pas (si le compte n'est pas actif, il existe mais on ne peut pas se connecter).
    En gros, et sauf cas particulier, tu veux que tes comptes soient actifs. Ou bien tu mets une colonne "active" en mettant tout à 1, ou ben tu ne mets pas de colonne (par défaut, c'est mis à 1).
    Seule la colonne "login" est obligatoire. Si "profil" n'est pas fourni, c'est mis à blanc. Si "password" n'est pas fourni, c'est mis à "1234".
    J'ai écrit l'aide, je publie la version modifiée ce soir.
  • jol5926jol5926 Member
    juillet 2015 modifié
    ok !
    Merci
    :)

    Ca fonctionne super bien
    :D
  • Bonjour,

    Nouvelle version, à télécharger sur le premier message du fil.

    Changelog :
    v1.0.1
    --------------------------------
    - Correction d'un bug lié aux vérifications de remplissage des pré-requis
    
    v1.0.2
    --------------------------------
    - On reload la page dès qu'on se connecte
    
    v1.0.3
    --------------------------------
    - On propose un message d'erreur dès qu'un mauvais couple (login/mdp) est entré.
    - On propose un lien "mot de passe oublié" qui permet d'afficher un texte paramétrable côté admin
    - Modification du lien d'accès à la partie admin pour ajouter "index.php"
    - Ajout d'une aide/explication pour l'injection de fichiers
    
  • jol5926jol5926 Member
    juillet 2015 modifié
    Hello Gari,
    je viens d'installer ta nouvelle version et petit bug.
    Le message "contacter votre administrateur" apparait tout de suite et lorsqu'on clique sur "mot de passe oublié" il disparait. Je pense que cela devrait être l'inverse.

    Quand on clique sur "mot de passe oublié" le message disparait et quand on clique de nouveau sur "mot de passe oublié" le message réapparait et comme ça en boucle.
    Le principe serait que le message apparaisse uniquement si l'internaute clique sur "mot de passe oublié" !
  • Je pense que c'est un problème de cache CSS. Il faut attendre que ton css en cache se mette à jour (recharge la page ?)
  • Hello Gari,
    J'ai désactivé le plugin, réinstallé le plugin, activé le plugin et ça fonctionne :)

    Merci Gari
  • jol5926jol5926 Member
    septembre 2015 modifié
    Hello Gari,
    j'ai créé un espace privé en utilisant ton plugin et je viens de m'apercevoir que lorsque je me connecte dans mon espace privé, je ne vois plus les commentaires.
    Dès que je me déconnecte, j'ai à nouveau accès aux commentaires.

    Quand on est connecté, si on créé un commentaire, il n'est pas visible. Ce même commentaire n'est toujours pas visible si on se déconnecte.

    Jol5926
  • @jol5926 : il faut que j'investigue ce bug. Je n'utilise pas les commentaires sur mes sites, donc je n'avais pas fait gaffe.
  • Bonjour,

    @Jol : le bug a été résolu, il était dans plnPrivatePages (cf le fil correspondant)

    La version v1.0.4 est disponible (cf premier message du fil). Cette version embarque la gestion du "se souvenir de moi" ou "rememberme". Cela permet aux utilisateurs qui le choisissent de rester connectés même après que la session soit terminée. Cela évite d'avoir à se reconnecter. Bien entendu, cela entraîne quelques faiblesses de sécurité, étant donné que c'est un cookie qui permet de gérer cette reconnexion et qu'un vol de cookie est si vite arrivé... Il est à noter que cette option "rememberme" n'est pas obligatoire, et est par défaut inaccessible : l'administrateur doit spécifiquement l'accepter dans la page de configuration du plugin.
    Pour souhaiter profiter de l'option de rememberme, l'utilisateur doit aller dans sa page de profil (en cliquant sur son nom une fois connecté) et ensuite cliquer sur la case à cocher correspondante.

    Le changelog :
    v1.0.4
    --------------------------------
    - Implémentation du RememberMe (voir le productBackLog.txt pour les règles d'implémentation)
    

    Il est à noter que j'ai rédigé l'ensemble des cas d'utilisation (product backlog) correspondants, si quelqu'un veut voir... Le code est commenté avec les références des cas d'utilisation correspondants chaque fois que c'est pertinent (sous la forme, par exemple, US01-RG01, ce qui signifie Règle de Gestion numéro 1 du Cas d'Utilisation numéro 1). Donc, si quelqu'un veut voir comment j'ai implémenté la US01-RG01, il suffit de chercher dans le code les références "US01" ou "US01-RG01".

    Si vous avez des remarques, notamment sur la pertinence de l'algo mis en œuvre au regard de la sécurité, je suis preneur !

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