# Federated Computer, Inc. # David Sainty 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: #{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 user: #{username}" else puts "User not found: #{username}" end end end # Main execution if ARGV.length != 2 puts "Usage: #{$0} discourse_username n3w_p4ssword." exit 1 end discourse_username = ARGV[0] discourse_username = ARGV[1] # search_topic_by_title(search_string) GossamerResetPassword.new.reset_password(discourse_username, new_password)