chatwoot-develop/debug_token.rb
2026-01-22 14:30:23 -03:00

54 lines
1.7 KiB
Ruby

class DebugToken
def self.run
email = 'rodrigobm10@gmail.com' # Use the email from the context
user = User.find_by(email: email)
unless user
puts 'User not found!'
return
end
puts 'Generating reset password instructions...'
raw_token = user.send_reset_password_instructions
puts "Raw Token generated: #{raw_token}"
# Reload user to get the saved digest
user.reload
puts "Saved reset_password_token digest: #{user.reset_password_token}"
puts "Saved reset_password_sent_at: #{user.reset_password_sent_at}"
# Simulate Controller Logic
# DeviseOverrides::PasswordsController#update logic
# 1. Digest the raw token
digested_token = Devise.token_generator.digest(DeviseOverrides::PasswordsController, :reset_password_token, raw_token)
puts "Digested Token (using Controller class): #{digested_token}"
# 2. Find user
found_user = User.find_by(reset_password_token: digested_token)
if found_user
puts 'SUCCESS: User found using controller logic.'
if found_user.id == user.id
puts 'User ID matches.'
else
puts 'User ID mismatch!'
end
else
puts 'FAILURE: User NOT found using controller logic.'
# Try digesting with User class just in case of scope difference (unlikely for Devise default)
digested_token_user_scope = Devise.token_generator.digest(User, :reset_password_token, raw_token)
puts "Digested Token (using User class): #{digested_token_user_scope}"
if digested_token == digested_token_user_scope
puts 'Digests match between Controller and User scope.'
else
puts 'Digests DO NOT match. This might be the issue if Devise mapping is wrong.'
end
end
end
end
DebugToken.run