A noter que l’accès peut aussi être restreint par plages d’IP, avec les plugins Intranet ou acces_restreint_ip non documenté..
On peut vouloir protéger du contenu pour bien des raisons, et la plupart du temps on aura à disposition un très bon et très puisant plugin "Accès Restreint". Néanmoins, Accès Restreint ne permet pas d’automatiser l’accès direct à un contenu "protégé" et il faut manuellement valider les personnes qui s’inscrivent. Ce qui n’est parfois absolument pas pensable.
On veut proposer aux visiteurs la démarche suivante :
Le visiteur doit remplir un formulaire en ligne pour s’enregistrer. Il doit ensuite avoir instantanément accès à un contenu protégé, après réception envoi d’un email avec identifiants et mot de passe.
Rappelons d’abord que l’ouverture d’une inscription libre [1] est une facilité native de SPIP, que vous aurez à autoriser dans la configuration...
Utiliser un plugin ?
Le plugin Jaz était semble-t-il la solution, mais il semble que ce plugin ne soit plus maintenu, et ne fonctionnerait pas bien pour SPIP 3....
Donc, en attendant que Accès Restreint ou Jaz ne proposent une "vraie solution fiable et parfaitement sécurisée", voici une solution de repli.
Une solution en code SPIP
Solution proposée : il suffira d’ajouter un petit bout de code (une petite Boucle), qui se limite finalement au contrôle sur la balise #SESSION : existante, elle montre que le visiteur est authentifié (donc a accès au contenu restreint) ou n’est pas existante, et le visiteur est par défaut rerouté sur la page 404.html.
Aux pages à protéger [2], il faut ajouter le code de Teddy :
- <BOUCLE_visiteur_session (CONDITION) {si #EVAL{$GLOBALS\['visiteur_session'\]\['nom'\]}|oui}>
- <div class="bloc" id="inc_identification_sedeconnecter">
- <h3 class="titre">[(#EVAL{$GLOBALS\['visiteur_session'\]\['nom'\]})]</h3>
- ...
- </div>
- </BOUCLE_visiteur_session>
Une formulation équivalente s’obtient avec un test de #SESSION ou mieux -en début de squelette- avec la nouvelle balise [(#AUTORISER{..}|sinon_interdire_acces{..})], mais il faudra trouver le bon verbe d’autorisation [3], à déduire de la page descriptive des Autorisations Dans Spip (également publiée sur le Carnet de Contrib).
Le visiteur non enregistré sera rerouté vers une page 404.html (titrée "Restricted area", ou tout autre URL-page proposée en paramètre du filtre |sinon_interdire_acces{url_retour}), sur laquelle l’on pourrait afficher 2 formulaires :
- le formulaire standard de "login" [4],
- un formulaire spécifique de "sign in".
Ce second formulaire pourrait être personnalisé, tel que fourni par le plugin "Inscription 3", proposant de nombreux champs d’origine (adresse, mobile, etc.). Sa configuration de paramètres permet de régler par défaut le statut des nouveaux inscrits à Les autorisations / gestion des droits [5].
Ajoutons que si les champs d’origine n’existent pas ou ne sont pas appropriés, on pourra ajouter des champs supplémentaires via le très puissant plugin "Champs Extra" (sur la table ’AUTEURS".
Et l’information par mail.
On utilisera le plugin "Facteur" pour la mise en forme de l’email envoyé automatiquement, utilisant le source d’origine rappelé ci-dessous :
Here are your identifiers. You may now participate on the site
"@nom_site_spip@" (@adresse_site@):Pour en changer :
surcharger la chaine de langue d’origine <:form_forum_voici1:> (qui remplace alors le texte d’origine)
modifier la structure de l’e-mail. Il faut commencer idéalement par copier le dossier "emails" du plugin Facteur et de le coller dans le dossier Squelettes. Il ne reste plus qu’à modifier le fichier texte.html du nouveau dossier.
Attention : les fichiers documents joints ne sont pas protégés, et on pourra y accéder via les moteurs de recherche.
Ben... voilà !
"et la Boucle est bouclée"

Article publié le 4 septembre 2015, et actualisé en mars 2020 .
Répondre à cet article