Skip to content

Commit

Permalink
Merge pull request heartcombo#3303 from BM5k/callbacks
Browse files Browse the repository at this point in the history
add Rememerable#after_remembered callback
  • Loading branch information
josevalim committed Nov 9, 2014
2 parents 9108687 + 8c3c6ac commit c7a135d
Show file tree
Hide file tree
Showing 6 changed files with 54 additions and 0 deletions.
10 changes: 10 additions & 0 deletions lib/devise/models/confirmable.rb
Expand Up @@ -249,6 +249,16 @@ def send_confirmation_notification?
confirmation_required? && !@skip_confirmation_notification && self.email.present?
end

# A callback initiated after successfully confirming. This can be
# used to insert your own logic that is only run after the user successfully
# confirms.
#
# Example:
#
# def after_confirmation
# self.update_attribute(:invite_code, nil)
# end
#
def after_confirmation
end

Expand Down
10 changes: 10 additions & 0 deletions lib/devise/models/recoverable.rb
Expand Up @@ -83,6 +83,16 @@ def clear_reset_password_token
self.reset_password_sent_at = nil
end

# A callback initiated after password is successfully reset. This can
# be used to insert your own logic that is only run after the user
# successfully resets their password.
#
# Example:
#
# def after_password_reset
# self.update_attribute(:invite_code, nil)
# end
#
def after_password_reset
end

Expand Down
13 changes: 13 additions & 0 deletions lib/devise/models/rememberable.rb
Expand Up @@ -89,6 +89,19 @@ def rememberable_options
self.class.rememberable_options
end

# A callback initiated after successfully being remembered. This can be
# used to insert your own logic that is only run after the user is
# remembered.
#
# Example:
#
# def after_remembered
# self.update_attribute(:invite_code, nil)
# end
#
def after_remembered
end

protected

def generate_remember_token? #:nodoc:
Expand Down
1 change: 1 addition & 0 deletions lib/devise/strategies/rememberable.rb
Expand Up @@ -27,6 +27,7 @@ def authenticate!
if validate(resource)
remember_me(resource)
extend_remember_me_period(resource)
resource.after_remembered
success!(resource)
end
end
Expand Down
11 changes: 11 additions & 0 deletions test/integration/database_authenticatable_test.rb
Expand Up @@ -81,4 +81,15 @@ class DatabaseAuthenticationTest < ActionDispatch::IntegrationTest
assert_contain 'Invalid credentials'
end
end

test 'valid sign in calls after_database_authentication callback' do
user = create_user(email: ' foo@bar.com ')

User.expects(:find_for_database_authentication).returns user
user.expects :after_database_authentication

sign_in_as_user do
fill_in 'email', with: 'foo@bar.com'
end
end
end
9 changes: 9 additions & 0 deletions test/integration/rememberable_test.rb
Expand Up @@ -164,4 +164,13 @@ def cookie_expires(key)
get users_path
assert_not warden.authenticated?(:user)
end

test 'valid sign in calls after_remembered callback' do
user = create_user_and_remember

User.expects(:serialize_from_cookie).returns user
user.expects :after_remembered

get new_user_registration_path
end
end

0 comments on commit c7a135d

Please sign in to comment.