discourse-import_scripts/goss-resetpw.rb

44 lines
1.4 KiB
Ruby

# Federated Computer, Inc.
# David Sainty <saint@federated.computer> 2024 A.D.
# Gossamer Threads to Discourse -- Reset Discourse Password and Clear Gossamer Password
# v0.1 Initial
require File.expand_path("../../../../config/environment", __FILE__)
class GossamerResetPassword
def reset_password(discourse_username, new_password)
puts "Resetting password for Discourse username: '#{discourse_username}'"
user = User.find_by(username: discourse_username)
if user
puts "New password: #{new_password} ..."
# Delete Gossamer MD5 Password
user.custom_fields.delete('md5_password') # This removes the field completely
user.save!
puts " STEP 1 COMPLETED: Gossamer MD5 Password custom field removed for username: #{discourse_username}"
# Set the Discourse password with the `password=` method to properly hash the password
user.password = new_password
user.save!
puts " STEP 2 COMPLETED: Discourse Password updated for username: #{discourse_username}"
else
puts "User not found: #{discourse_username}"
end
end
end
# Main execution
if ARGV.length != 2
puts "Usage: #{$0} discourse_username n3w_p4ssword."
exit 1
end
discourse_username = ARGV[0]
new_password = ARGV[1]
# search_topic_by_title(search_string)
GossamerResetPassword.new.reset_password(discourse_username, new_password)