Falls jemand hier vorbeikommt und genauso verloren war wie ich, stelle ich hier meinen Code zur Verfügung, da ich ihn wie gewünscht zum Laufen gebracht habe. Ich habe keine Dateien geändert. Ich habe einfach eine neue Datei plugin.rb erstellt und folgenden Inhalt hineingeschrieben:
# about: Ermöglicht Benutzern im anonymen Modus, ihre Benutzernamen zu ändern
# version: 0.1
require_dependency 'guardian'
require_dependency 'guardian/user_guardian'
class ::Guardian
end
module ::UserGuardian
def can_edit_username?(user)
return false if SiteSetting.sso_overrides_username?
return true if is_staff?
return false if SiteSetting.username_change_period <= 0
return true if is_anonymous?
is_me?(user) && ((user.post_count + user.topic_count) == 0 || user.created_at > SiteSetting.username_change_period.days.ago)
end
def can_edit_name?(user)
return false unless SiteSetting.enable_names?
return false if SiteSetting.sso_overrides_name?
return true if is_staff?
return true if is_anonymous?
can_edit?(user)
end
end
Dies überschreibt die Klasse user_guardian.rb im Discourse-Kern, damit Benutzer den Benutzernamen und Namen ihrer anonymen Benutzerkonten ändern können.
Wenn Sie vergleichen, was ich hier habe, mit dem, was in user_guardian.rb im Discourse-Kern steht, sehen Sie, dass es eine Reihe weiterer Dinge gibt, bei denen ich nichts tun musste, also habe ich sie unverändert gelassen. Alles, was ich brauchte, war, diese beiden Methoden can_edit_username und can_edit_name zu bearbeiten, indem ich einige Rückgabewerte von false auf true änderte, und ich konnte erreichen, was ich wollte.
Sicherlich gibt es Verbesserungen, die vorgenommen werden könnten, und es gibt wahrscheinlich bewährte Praktiken, die ich durch das Lesen der verlinkten Beiträge hier und anderswo ableiten konnte. Aber wenn Sie wie ich brandneu in Ruby sind und einfach nur etwas sehr Einfaches im Kern anpassen möchten, ist dies ein funktionierendes minimalistisches Beispiel dafür, was Sie tun müssen.
Vielen Dank an die Leute in diesem Thread für ihre Geduld mit mir sowie für ihre Ermutigung und Unterstützung! Insbesondere an @merefield, der mich bereits bei einem anderen Beitrag in der Vergangenheit unterstützt hat.