Si quelqu’un tombe sur ce message et qu’il était aussi perdu que moi, je fournis ci-dessous mon code, car j’ai réussi à le faire fonctionner comme prévu. Je n’ai modifié aucun fichier. J’ai simplement créé un nouveau fichier plugin.rb et y ai placé le contenu suivant :
# about: Permet aux utilisateurs en mode anonyme de modifier leurs noms d'utilisateur
# 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
Cela remplace la classe user_guardian.rb dans le cœur de Discourse afin de permettre aux utilisateurs de modifier le nom d’utilisateur et le nom de leurs comptes anonymes.
Si vous comparez ce que j’ai ici avec ce qui se trouve dans user_guardian.rb dans le cœur de Discourse, vous verrez qu’il y a beaucoup d’autres éléments avec lesquels je n’avais pas besoin de faire quoi que ce soit, donc je les ai laissés tels quels. Tout ce dont j’avais besoin était de modifier ces deux méthodes can_edit_username et can_edit_name en changeant certaines valeurs de retour de false à true, et j’ai pu obtenir ce dont j’avais besoin.
Il est certain qu’il y a des améliorations à apporter, et il existe probablement des meilleures pratiques que j’ai pu dégager en lisant les publications liées ici et ailleurs, mais si vous êtes tout nouveau dans Ruby comme moi et que vous voulez simplement ajuster quelque chose de très simple dans le cœur, c’est un exemple minimaliste fonctionnel de ce que vous devez faire.
Un grand merci aux personnes de ce fil pour leur patience, leurs encouragements et leur aide ! En particulier @merefield, qui m’a en fait aidé dans un autre post par le passé.