Hooks de la syntaxe 'from: & to:' dans yml

Bonjour, j’aimerais reconstruire l’application en incluant quelques modifications à un fichier afin de désactiver la fonction de recherche pour les utilisateurs anonymes. (plus qu’avec juste du CSS)

Quelqu’un peut-il me fournir de la documentation sur la syntaxe de ces hooks pour la partie from: et to: ?

    - replace:
        filename: "/var/www/discourse/app/assets/javascripts/discourse/app/components/search-menu.js"
        from: /get classNames()/
        to: |
          if (!this.currentUser) {return false;} get classNames()

Discourse accepte la syntaxe maintenant mais à la fin de la reconstruction, cela échoue avec

 Erreur : Parse Error à discourse/components/search-menu.gjs:88:7"
replace a échoué avec les paramètres {"filename"=\u003e"/var/www/discourse/app/assets/javascripts/discourse/app/components/search-menu.gjs", "from"=\u003e"/get classNames()/", "to"=\u003e"if (!this.currentUser) {return false;} get classNames()\n"}

Il existe un paramètre de site caché pour accomplir cela :

rate_limit_search_anon_global_per_minute
1 « J'aime »

Merci de l’avoir signalé. Pour clarifier, quel est le nom du paramètre de site caché ? Et désactive-t-il complètement la recherche pour les utilisateurs anonymes, ou masque-t-il simplement les résultats ? Je cherche un moyen de bloquer l’accès au niveau du contrôleur, donc je me demande si ce paramètre seul suffit ou si du code personnalisé est toujours nécessaire.

Merci de m’avoir fourni la variable, avec cette documentation j’ai pu la faire fonctionner.

J’ai donc modifié le fichier app.yml comme suit, sauvegardé, puis lancé ./launcher restart app (pas de reconstruction nécessaire)

env:
  DISCOURSE_RATE_LIMIT_SEARCH_ANON_GLOBAL_PER_MINUTE: 0

Maintenant, la page /search est inaccessible = super.
Maintenant, le bouton de recherche du front-end renvoie instantanément : vous avez effectué cette action trop souvent = super.
Vous pouvez masquer le bouton de recherche avec :

.anon #search-button {
	display: none !important;
}

Mais la question est : est-ce complet ? N’importe qui peut-il simplement créer un cookie de session simple pour faire croire qu’il est connecté afin d’accéder au contenu du site par le biais des recherches ?

Solution plus complète mais incomplète :
Le fichier est : /var/www/discourse/app/controllers/search_controller.rb
La modification : ajouter « if current_user.present? » après « def show » et ajouter un « end » en bas de la condition.

Cependant, je n’ai pas réussi à le rendre persistant après le redémarrage, donc toute personne est la bienvenue pour me dire comment le rendre persistant après le redémarrage avec les hooks app.yml after_code replace: feature.

Comme se connecter pour effectuer des recherches ?

Dans l’OP, vous avez spécifié que vous vouliez

Et c’est ce que fait ce paramètre.

Bien sûr, cela n’affectera pas les utilisateurs qui sont connectés.

Je veux dire un utilisateur non connecté qui créerait un cookie de session pour prétendre qu’il est connecté, mais peut-être que je vais un peu trop loin car je suppose que la fonction currentUser vérifie la clé de session.

:face_with_raised_eyebrow:

Ce serait un problème de sécurité. Si vous parvenez à le faire, assurez-vous de le signaler sur HackerOne

1 « J'aime »

« Ce serait un problème de sécurité. Si vous parvenez à le faire, assurez-vous de le signaler à HackerOne »

Non, je suis nouveau sur Discourse, je ne peux même pas citer correctement :slight_smile: , je demandais juste, peut-être qu’il y avait un ingénieur Discourse dans le coin :slight_smile: ; en tout cas, nous avons trouvé notre solution à ce fil de discussion grâce à vous Falco

1 « J'aime »

DISCOURSE_RATE_LIMIT_SEARCH_ANON_GLOBAL_PER_MINUTE: 0

mais n'hésitez pas à essayer ceci au niveau du contrôleur :
/var/www/discourse/app/controllers/search_controller.rb
La modification : ajouter « if current_user.present? » après « def show » et ajouter un « end » en bas de la condition.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.