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"}
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.
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 :
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_codereplace: feature.
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.
« 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 , je demandais juste, peut-être qu’il y avait un ingénieur Discourse dans le coin ; en tout cas, nous avons trouvé notre solution à ce fil de discussion grâce à vous Falco
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.