Documentation11 min de lecture

Le site web Odoo : consentement, captcha, pages protégées, llms.txt

Le module OCA `website_altcha` (dépôt `website`, version 18.0.1.1.0, licence AGPL-3) ajoute un **captcha respectueux de la vie privée entièrement hébergé par Odoo**, fondé sur une bibliothèque ouverte — proposé comme alternative aux services de captcha américains, qui déposent des traceurs avant tout consentement. Vingt-trois autres modules traitent le consentement aux cookies, les pages protégées et le fichier llms.txt.

Page web consultée sur un écran d'ordinateur

Un site web d'entreprise doit protéger ses formulaires des robots, recueillir le consentement aux cookies, réserver certaines pages aux clients, et se laisser lire par les moteurs comme par les assistants. Odoo fournit le constructeur de site ; il ne fournit aucune de ces quatre choses.

Vingt-quatre modules communautaires les ajoutent, et terminent le dépôt website.

Résumé

Trois modules traitent les robots : un captcha auto-hébergé respectueux de la vie privée, son extension aux inscriptions aux événements, et une protection anti-robot appliquée au formulaire de connexion.

Trois modules traitent le consentement et le légal : deux intégrations de services de bandeau de consentement aux cookies, et l'acceptation obligatoire de conditions légales sur n'importe quel formulaire public, depuis l'éditeur de site.

Cinq modules traitent l'accès : des pages réservées aux utilisateurs connectés déclarées par chemin d'URL, l'affichage d'une entrée de menu selon que le visiteur est connecté ou non, une redirection personnalisée après connexion ou inscription, un abonnement aux notifications d'un forum, et un compteur de téléchargements de document produit.

Trois modules traitent le référencement et les assistants : un fil d'Ariane construit depuis la hiérarchie des menus, l'exclusion d'adresses du plan de site, et un fichier llms.txt servi à la racine, configurable par site.

Dix modules enfin traitent les outils du site : deux intégrations de mesure d'audience, la publication programmée d'un article de blog, une réponse automatique au formulaire de contact, l'édition des champs site web depuis la fiche contact, une recherche dans l'en-tête, des listes déroulantes enrichies, un sélecteur de pays réutilisable, les liens de réseaux sociaux, et un bouton de messagerie instantanée flottant.

L'essentiel

  • Un captcha hébergé chez vous, sans traceur tiers.
  • Des bandeaux de consentement aux cookies conformes.
  • Des conditions légales obligatoires sur tout formulaire public.
  • Des pages réservées aux utilisateurs connectés, par chemin d'URL.
  • Une entrée de menu affichée selon l'état de connexion.
  • Un fichier llms.txt servi à la racine, par site.
  • Des adresses exclues du plan de site.
  • Un fil d'Ariane construit depuis les menus.

Ce que ces modules ajoutent à l'instance

FamilleModulesNombre
Robotswebsite_altcha, website_event_altcha, website_cf_turnstile_login3
Consentement et légalwebsite_cookiebot, website_cookiefirst, website_form_require_legal3
Accèswebsite_require_login, website_menu_by_user_status, website_user_login_redirect_custom, website_forum_subscription, website_product_document_download_counter5
Référencement et assistantswebsite_breadcrumb, website_exclude_sitemap, website_llms3
Outils du sitewebsite_analytics_matomo, website_google_tag_manager, website_blog_scheduled_publication, website_crm_quick_answer, website_partner_form, website_search_header, website_select2, website_snippet_country_dropdown, website_social_media_link, website_whatsapp10

Le menu ajouté : Site Web ▸ Configuration ▸ Authorization required URLs. Les autres réglages vivent dans les paramètres du site ou dans l'éditeur.

Protéger les formulaires sans traceur tiers

Un captcha fourni par un service américain dépose un traceur sur chaque page qui le porte, avant tout consentement. Sur un formulaire de contact, c'est un transfert de données vers un pays tiers pour une finalité que personne n'a acceptée — le problème exact que le bandeau de consentement est censé résoudre.

website_altcha ajoute un captcha entièrement hébergé par Odoo, fondé sur une bibliothèque ouverte. Aucun appel à un service tiers, donc aucun traceur et aucun transfert.

  • website_event_altcha étend cette protection aux inscriptions aux événements.
  • website_cf_turnstile_login applique une protection anti-robot d'un service d'infrastructure au formulaire de connexion — il étend un module non présent dans ce lot.

Le formulaire de connexion mérite une attention particulière : c'est la cible des attaques par essais répétés, et le seul formulaire d'un site qui donne accès à des données.

Le consentement et les conditions

website_cookiebot et website_cookiefirst intègrent deux services de bandeau de consentement aux cookies, pour afficher un bandeau conforme avant le dépôt de cookies non essentiels. Le second est en version 18.0.2.0.0.

website_form_require_legal (LGPL-3) ajoute dans l'éditeur de site la possibilité d'exiger l'acceptation de conditions légales sur n'importe quel formulaire public.

La case d'acceptation n'est pas une formalité juridique : c'est la preuve du consentement, horodatée, qu'on cherche le jour où une personne demande la suppression de ses données et contexte la base légale de leur collecte.

Les deux approches sont complémentaires : le bandeau traite les cookies, la case traite la collecte de données par formulaire. Aucune ne remplace l'autre.

Réserver des pages et orienter les visiteurs

website_require_login (LGPL-3) permet de restreindre des pages aux utilisateurs connectés : l'administrateur déclare une liste de chemins d'URL relatifs qui deviennent protégés. Menu sous Site Web ▸ Configuration ▸ Authorization required URLs.

website_menu_by_user_status décide entrée de menu par entrée de menu si elle s'affiche pour les visiteurs connectés, pour les visiteurs publics, ou pour les deux.

Les deux se posent ensemble : protéger une page sans masquer son entrée de menu produit un visiteur qui clique et tombe sur un écran de connexion. C'est la différence entre un site à espace client et un site qui en donne l'impression.

  • website_user_login_redirect_custom configure une adresse de redirection après connexion ou inscription.
  • website_forum_subscription ajoute un bouton d'abonnement aux notifications d'un forum pour les visiteurs connectés.
  • website_product_document_download_counter (LGPL-3) compte les téléchargements d'un document produit publié sur la boutique — fiche technique, manuel, notice.

Le compteur de téléchargements est une mesure commerciale réelle : savoir que la notice d'un produit a été téléchargée trois cents fois dit quelque chose sur l'intérêt qu'il suscite, et sur les questions qu'il pose.

Se laisser lire : moteurs et assistants

website_llms sert un fichier llms.txt à la racine du site, dont le contenu se configure par site dans les paramètres.

Le fichier llms.txt est à un assistant ce que le plan de site est à un moteur : une carte explicite de ce que le site contient et de ce qu'il faut en retenir. Le proposer coûte un fichier ; ne pas le proposer laisse l'assistant deviner.

  • website_exclude_sitemap exclut des adresses du plan de site, selon des valeurs définies en configuration.
  • website_breadcrumb (LGPL-3) ajoute un fil d'Ariane en haut des pages publiques, construit automatiquement depuis la hiérarchie des menus du site.

Le fil d'Ariane sert la navigation et le référencement : il donne aux moteurs la structure du site telle que le visiteur la perçoit, et non telle que les URL la décrivent.

L'exclusion du plan de site est le pendant nécessaire : une page de remerciement, un espace client, une page de test n'ont rien à faire dans un plan de site, et leur présence dilue le reste.

Les outils du site

ModuleCe qu'il apporte
website_analytics_matomoMesure d'audience par un service auto-hébergeable
website_google_tag_managerUn identifiant de conteneur de balises, sans modifier le code des pages
website_blog_scheduled_publicationLa publication programmée d'un article de blog à une date et heure futures
website_crm_quick_answerUne réponse automatique au formulaire de contact, dès la création de l'opportunité
website_partner_formLes champs de description publique du contact éditables depuis le back-office
website_search_headerUne recherche pliable dans l'en-tête du site (LGPL-3)
website_select2Des listes déroulantes enrichies sur le site et le portail (LGPL-3)
website_snippet_country_dropdownUn sélecteur de pays réutilisable dans un formulaire (LGPL-3)
website_social_media_linkLes liens de réseaux sociaux gérés depuis le back-office
website_whatsappUn bouton de messagerie instantanée flottant sur les pages

Le choix entre les deux modules de mesure d'audience n'est pas technique : l'un permet d'héberger la mesure soi-même, l'autre la confie à un tiers. Pour une PME française qui doit justifier ses transferts de données, c'est le premier arbitrage, pas le dernier.

La réponse automatique au formulaire de contact mérite une mention : elle s'appuie sur le moteur d'automatisation et part dès la création de l'opportunité. Sur un formulaire de contact, l'accusé de réception immédiat est ce qui distingue une demande traitée d'une demande perdue — du point de vue du demandeur.

Le sélecteur de pays est la brique dont dépend le champ de TVA adapté au pays du tunnel de commande, traité dans e-commerce B2B.

Limites connues

  • Deux modules de bandeau de consentement intègrent des services tiers payants : le bandeau est conforme, le service est externe.
  • website_cf_turnstile_login étend un module absent de ce lot (website_cf_turnstile) : à installer d'abord.
  • Protéger une page sans masquer son entrée de menu produit un clic vers un écran de connexion : installer les deux modules ensemble.
  • website_require_login protège des chemins déclarés : une page oubliée dans la liste reste publique.
  • Le fichier llms.txt se configure à la main : il ne se met pas à jour tout seul quand le site change.
  • website_breadcrumb repose sur la hiérarchie des menus : un site dont les menus sont à plat n'aura pas de fil d'Ariane utile.
  • Le conteneur de balises charge du code tiers décidé hors d'Odoo : ce qu'il dépose échappe au contrôle du site.
  • website_whatsapp ouvre une conversation sur un service tiers : le numéro affiché et les échanges sortent du périmètre de l'ERP.

Identité technique

Les vingt-quatre modules viennent du dépôt OCA website, branche 18.0 — dont les 26 modules sont désormais tous documentés ici. Dix-huit sont en AGPL-3, six en LGPL-3. Les dépendances : website pour la plupart, website_event pour les inscriptions, website_forum pour le forum, website_sale pour le compteur de téléchargements, website_blog pour la publication programmée, website_crm et base_automation pour la réponse automatique, website_partner pour les champs publics, web_editor pour les conditions légales.

Voir aussi e-commerce B2B et le catalogue en ligne.

Questions fréquentes

Peut-on protéger un formulaire Odoo des robots sans captcha américain ?

Oui : website_altcha ajoute un captcha entièrement hébergé par Odoo, fondé sur une bibliothèque ouverte — aucun appel tiers, donc aucun traceur. Un captcha fourni par un service américain dépose un traceur avant tout consentement, ce qui est précisément le problème que le bandeau de consentement est censé résoudre.

Peut-on réserver certaines pages du site aux clients connectés ?

Oui, avec website_require_login : l'administrateur déclare des chemins d'URL qui deviennent protégés, sous Site Web ▸ Configuration ▸ Authorization required URLs. Installez aussi website_menu_by_user_status, sinon le visiteur clique sur une entrée de menu et tombe sur un écran de connexion.

Odoo peut-il servir un fichier llms.txt ?

Oui, avec website_llms, dont le contenu se configure par site dans les paramètres. Le fichier llms.txt est à un assistant ce que le plan de site est à un moteur : une carte explicite. Attention, il se configure à la main et ne se met pas à jour quand le site change.

Comment exiger l'acceptation de conditions sur un formulaire public ?

website_form_require_legal l'ajoute depuis l'éditeur de site, sur n'importe quel formulaire. Ce n'est pas une formalité : c'est la preuve du consentement, horodatée, qu'on cherche le jour où une personne demande la suppression de ses données et contexte la base légale de leur collecte.

Peut-on programmer la publication d'un article de blog ?

Oui : website_blog_scheduled_publication ajoute une date et heure de publication future sur l'article, au lieu d'une publication immédiate.

Se faire accompagner

Le site web d'une PME concentre trois obligations qui n'ont rien à voir avec la vente : protéger les formulaires, recueillir le consentement, et pouvoir justifier ses transferts de données. Les trois se règlent par des modules, et les trois se vérifient avec un outil d'inspection du navigateur — pas sur la parole d'un prestataire.

Nous auditons donc ce qu'un site dépose réellement avant consentement — captcha compris, car c'est l'oubli le plus fréquent — puis nous posons les pages protégées et le fichier llms.txt. Voir les prestations d'Atalios Consulting ou demander un rappel.

Pour aller plus loin

En résumé

Un site d'entreprise doit protéger ses formulaires des robots, recueillir le consentement, réserver des pages aux clients et se laisser lire par les moteurs comme par les assistants. Odoo fournit le constructeur de site, aucune de ces quatre choses. Parlons de votre site.

Documentation OCASite webOdoo Community

Partager

Fiches connexes

Baies de serveurs dans une salle machine
Le module OCA `queue_job` (dépôt `queue`, version 18.0.3.4.1, licence LGPL-3) ajoute à Odoo une **file de travaux de fond** avec ses canaux, ses fonctions et ses tâches, sous le menu **File d'attente des tâches** : c'est la brique dont dépendent plus de quarante modules communautaires, et la première à surveiller en exploitation. Vingt-six autres modules traitent les composants, la configuration hors base, l'impression serveur et l'IoT.
Lire la suite
Documentation OCA, Exploitation
Câbles réseau branchés sur un commutateur
Le module OCA `endpoint` (dépôt `web-api`, version 18.0.1.1.4, licence LGPL-3) permet de **déclarer un point d'entrée HTTP depuis l'interface**, sous **Paramètres ▸ Technique ▸ Endpoints** : une adresse, une méthode, un traitement — sans écrire de module. Vingt-trois autres modules traitent le cache, les imports par sessions, les échanges de factures et l'agenda.
Lire la suite
Documentation OCA, Intégration