creat2id : Inscription avec double authentification

Ce plugin a pour objet de permettre la création, dans l’espace public, d’une visiteuse ou d’un visiteur avec une double authentification (vérification en deux étapes, une méthode d’authentification forte).

Modalité

La balise #FORMULAIRE_INSCRIPTION affiche le formulaire permettant aux visiteuses ou visiteurs de votre site [1] de s’inscrire automatiquement [2], c’est à dire sans aucune intervention des responsables du site. Le plugin modifie cette balise afin d’ajouter la demande d’une clé d’authentification [3].

Cette clé d’authentification est tout simplement un code que vous avez transmis à la personne (dans un courrier, sur une carte d’adhésion...) et qu’elle va renseigner dans le formulaire de création de son compte en ligne.

Le formulaire va analyser le code de la personne (la clé) en regardant si ce code correspond à son mail ou à son nom. Si cela ne correspond pas, elle ne pourra pas créer son compte.

Exemple de double authentification sur l’espace public d’un site

Mise en oeuvre

L’algorithme pour vérifier la clé d’authentification est appelé par la fonction creat2id_cle_activation_dist ($cle_donnee, $mail, $nom ).

Il vous appartient de programmer cette fonction.

Vous pouvez intégrer la fonction dans votre propre plugin en y créant un répertoire dénommé creat2id et en y plaçant un fichier, cle_activation.php contenant la fonction dénommée creat2id_cle_activation ($cle_donnee, $mail, $nom).

Cette fonction est appelée dans la partie verifier() du formulaire d’inscription. Elle doit vérifier que la clé donnée par l’internaute correspond au mail associé ou au nom de la personne (selon votre choix).

Pour aller plus loin

Voici une piste de départ avec deux fonctions,

  • creat2id_cle_activation qui va permettre de vérifier à l’inscription que l’internaute possède une clé valide.
  • creat2id_donne_cle qui vous donnera la clé valide à donner à l’internaute pour qu’elle ou il s’enregistre sur le site.
/**
 * La fonction creat2id_cle_activation retourne une valeur boléenne selon 
 * que la clé est valide (true) ou non (false)
 *
 * @param string $cle_transmise
 * @param string $mail
 * @param string $nom
 * @return boolean
 */

function creat2id_cle_activation ($cle_transmise, $mail, $nom) {

        // vérification que la clé est valide
        $cle_transmise = trim(strtolower($cle_transmise));
        $cle = sha1 ($mail);
        
        return ($cle == $cle_transmise);
}

/**
 * La fonction creat2id_donne_cle retourne la clé d'un mail (qu'il faudra présenter au formulaire)
 *
 * @param string $mail
 * @return string
 */
function creat2id_donne_cle($mail) {
        // la clé sera un nombre hexadécimal d'une taille de 40 caractères 
        return sha1 ($mail);
}

Vous pouvez souhaiter faire un traitement particulier à l’issue de l’identification réussie.

Pour ce faire une fonction accueille ce traitement: creat2id_id_reussie($cle, $desc). Cette fonction est appelée dans la partie traiter() du formulaire d’inscription.

Là aussi c’est à vous de l’écrire. Voici un simple exemple indiquant lors d’une opération réussie une mention dans le log.

/**
 * La fonction creat2id_id_reussie effectue le traitement souhaité après l'identification réussie
 *
 * @param string $cle
 * @param array $desc
 * @return void
 */
function creat2id_id_reussie ($cle, $desc) {
        // On signale l'opération 
        spip_log('double identification réussie avec pour clé ' . $cle . ' et pour auteur·trice ' . print_r($desc,true), 'creat2id.' . _LOG_INFO_IMPORTANTE
        );
}

Enfin, vous pouvez souhaiter améliorer le rendu HTML. Pour ce faire, pensez à regarder la configuration possible du plugin.

Une possibilité de personnalisation de la noisette formulaires/inc-inscription-explication.html, est de substituer son contenu par :

<h3>[(#CHEMIN_IMAGE{cadenas-32.png}|balise_img{securise,cadre-icone})]<:creat2id:titre_inscription:></h3>
<p class='notice'><:creat2id:titre_inscription_explication:></p>

Footnotes

[1Pensez, si vous souhaitez restreindre l’inscription aux visiteurs·teuses à passer en argument à la balise cette option : [(#FORMULAIRE_INSCRIPTION{6forum})] où la valeur « 6forum » de l’argument correspond à la valeur technique du statut de visiteur désiré lors de l’inscription.

[2L’inscrition permet d’obtenir des identifiants de connexion à votre site SPIP et donc d’acquérir le statut d’ « auteur·trice » de votre site.

[3Le plugin ne modifie pas la balise mais utilise trois pipelines pour s’inscrire dans le flux de données du formulaire d’inscription existant :

  1. formulaire_charger,
  2. formulaire_verifier,
  3. formulaire_traiter.
    A l’aide de ces pipelines, le plugin ajoute des éléments pour les traitements PHP relatifs à la clé d’authentification.

Pour modifier le formulaire dans sa partie HTML, le plugin procède en utilisant un pipeline pour modifier l’affichage imposé par le formulaire :

  • formulaire_fond

Discussion

No discussion

Add a comment

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite / PostgreSQL
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparait.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom