A: 

I would do it this way, add accessors old_password, reset_password (boolean that we set to true when reseting password):

attr_accessor :old_password, :reset_password

Now, we need to validate the old password when updating, but not reseting:

validate :old_password_valid, :unless => [:reset_password]

def old_password_valid
  errors.add(:old_password, "You must introduce your password") if !new_record? && !valid_password?(old_password)
end

So far, we've validated that the old password is valid when the user is updating their profile.

Now, to ask for the new password or not, Authlogic adds a method 'require_password?' to your user model, you have to override it. I did this way:

def require_password?
  password_changed? || (crypted_password.blank? && !new_record?) || reset_password
end

Basically asks for the password (and confirmation) when: 1) User updating password, 2) User activating their account (so they still haven't got a password), 3) user resetting password.

Hope this helps.

jordinl
I'm not sure where I'm supposed to put this code... I placed the attr_accessors in the user.rb, and I placed the rest of the code in the UsersController, but when I do that, it says undefined method for validate when I go to the registration page (I haven't tried to update the user). So I moved the code into the user.rb and it no longer gives the undefined error, but it asks for an Old Password when I try to register. Can you tell me more precisely where this code goes?
Felix Solis
The could should all be in user.rbThe problem with the old password might be caused because I wrote:'validate :old_password_valid, :on => [:update], :unless => [:reset_password]' when it should be:'validate :old_password_valid, :on => :update, :unless => [:reset_password]'
jordinl
oops, wrote could instead of code...
jordinl
I'm afraid it's still not working. It continues to ask for an Old Password when I try to register a new account.
Felix Solis
can you create a gist with the code in your user.rb and share it?
jordinl
I edited the page above with the user.rb code. I tried it with and without require_password_confirmation = false
Felix Solis
you don't need this... I've edited my code, it seems to work fine.
jordinl