Comment réinitialiser le mot de passe des utilisateurs dans la base de données PostgreSQL

Bonjour à tous,

Nous avons quelques questions sur la façon de réinitialiser le mot de passe des utilisateurs dans Discourse.
Nous savons que la commande « RAILS_ENV=production /usr/local/bin/bundle exec rake admin:create » peut réinitialiser le mot de passe des utilisateurs existants ou créer un nouvel utilisateur administrateur. Mais nous ne voulons pas réinitialiser le mot de passe de l’utilisateur administrateur en utilisant cette méthode. Nous voulons réinitialiser le mot de passe des utilisateurs dans la base de données PostgreSQL.
Les informations de l’utilisateur sont stockées dans la table users de la base de données PostgreSQL. Et nous pouvons vérifier les utilisateurs et les mots de passe en utilisant « select id, username, name, password_hash from users; ». Nous avons donc deux questions.

  1. Comment le mot de passe est-il crypté ? MD5 ? Sha256 ?
  2. Pouvons-nous réinitialiser le mot de passe en utilisant « UPDATE users SET password_hash = ‘there is a hash password’ WHERE id=1; » ?

Si quelqu’un a une idée, ce serait très utile, merci !

Quel problème résolvez-vous ? Pourquoi ne pas leur faire utiliser le lien de réinitialisation du mot de passe et le définir eux-mêmes ?

Je le ferais depuis la console Rails plutôt que SQL. Je devrais regarder la source pour obtenir le code.

1 « J'aime »

Depuis la console Rails :

User.find_by(username: 'gollum').update!(password: 'shiiiire!-BAGGINS!')
3 « J'aime »

@supermathie , merci beaucoup !
Nous pouvons réinitialiser le mot de passe en utilisant

RAILS_ENV=production rails runner 'User.find_by_email("admin@example.com").update!(password:"AdminAdmin1234566xxxxxx")'
2 « J'aime »