Hooks from: & to: Syntax in yml

Hallo, ich möchte die App neu erstellen, einschließlich einiger Änderungen an einer Datei, um die Suchfunktion für anonyme Benutzer zu deaktivieren (mehr als nur mit CSS).

Kann mir jemand Dokumentation zur Syntax dieser Hooks für den from: & to: Teil zur Verfügung stellen?

replace
filename:“/var/www/discourse/app/controllers/search_controller.rb”
from:
to:

In search_controller.rb möchte ich Zeile 12 ersetzen durch
def show
durch
def show
if current_user.present?

Und Zeile 76
format.json { render_json_dump(serializer) }
durch
format.json { render_json_dump(serializer) }
end

Es gibt eine versteckte Seiteneinstellung, um dies zu erreichen:

rate_limit_search_anon_global_per_minute
1 „Gefällt mir“

Danke, dass Sie darauf hingewiesen haben. Um das klarzustellen, wie lautet der Name der versteckten Website-Einstellung? Und deaktiviert sie die Suche für anonyme Benutzer vollständig oder werden nur die Ergebnisse ausgeblendet? Ich suche nach einer Möglichkeit, den Zugriff auf Controller-Ebene zu blockieren. Daher frage ich mich, ob diese Einstellung allein ausreicht oder ob noch benutzerdefinierter Code benötigt wird.

Vielen Dank für die Bereitstellung der Variable. Mit dieser Dokumentation konnte ich es zum Laufen bringen.

Ich habe die app.yml wie folgt geändert, gespeichert und dann ./launcher restart app (kein Rebuild nötig) ausgeführt:

env:
  DISCOURSE_RATE_LIMIT_SEARCH_ANON_GLOBAL_PER_MINUTE: 0

Jetzt ist die /search-Seite nicht mehr erreichbar = großartig.
Jetzt gibt der Suchbutton im Frontend sofort zurück: Sie haben diese Aktion zu oft ausgeführt = großartig.
Sie können den Suchbutton ausblenden mit:

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

Aber die Frage ist: Ist das gründlich? Kann jeder einfach einen einfachen Session-Cookie erstellen, um den Anschein zu erwecken, dass er verbunden ist, damit er über Suchen auf den Inhalt der Website zugreifen kann?

Gründlichere, aber unvollständige Lösung:
Die Datei ist: /var/www/discourse/app/controllers/search_controller.rb
Die Änderung: Füge „if current_user.present?“ nach „def show“ ein und füge am Ende der Bedingung ein „end“ hinzu.

Ich konnte es jedoch nach einem Neustart nicht persistent machen, daher ist jeder willkommen, der mir sagen kann, wie ich es nach einem Neustart mit den app.yml Hooks after_code replace: feature persistent machen kann.

Meinst du, man muss sich einloggen, um Suchen durchzuführen?

In der OP hast du angegeben, dass du das tun möchtest:

Und das ist es, was diese Einstellung bewirkt.

Natürlich wird sie keine Auswirkungen auf Benutzer haben, die eingeloggt sind.

Ich meine einen nicht angemeldeten Benutzer, der einen Session-Cookie erstellen würde, um vorzugeben, dass er angemeldet ist, aber vielleicht spekuliere ich hier etwas zu weit, da ich vermute, dass die currentUser-Funktion den Session-Schlüssel überprüft.

:face_with_raised_eyebrow:

Das wäre ein Sicherheitsproblem. Wenn Sie das erreichen können, melden Sie es bitte unter HackerOne

1 „Gefällt mir“

„Das wäre ein Sicherheitsproblem. Wenn Sie das erreichen können, stellen Sie sicher, dass Sie es bei HackerOne melden.“

Nein, ich bin neu bei Discourse, ich kann nicht einmal richtig zitieren :slight_smile: , ich habe nur gefragt, vielleicht war ein Discourse-Ingenieur in der Nähe :slight_smile: ; wie auch immer, wir haben dank Ihnen, Falco, unsere Lösung für diesen Thread gefunden.

1 „Gefällt mir“

DISCOURSE_RATE_LIMIT_SEARCH_ANON_GLOBAL_PER_MINUTE: 0

zögern Sie jedoch nicht, dies auf Controller-Ebene zu versuchen:
/var/www/discourse/app/controllers/search_controller.rb
Die Änderung: Fügen Sie „if current_user.present?“ nach „def show“ hinzu und fügen Sie am Ende der Bedingung ein „end“ hinzu.

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