From b5713a8ddf00867df3e0bf28890f4a86c933328b Mon Sep 17 00:00:00 2001 From: BM5k Date: Sat, 8 Nov 2014 16:39:24 -0700 Subject: [PATCH] add Rememerable#after_remembered callback --- lib/devise/models/rememberable.rb | 13 +++++++++++++ lib/devise/strategies/rememberable.rb | 1 + test/integration/rememberable_test.rb | 9 +++++++++ 3 files changed, 23 insertions(+) diff --git a/lib/devise/models/rememberable.rb b/lib/devise/models/rememberable.rb index e9326d26..2f75290b 100644 --- a/lib/devise/models/rememberable.rb +++ b/lib/devise/models/rememberable.rb @@ -89,6 +89,19 @@ module Devise 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: diff --git a/lib/devise/strategies/rememberable.rb b/lib/devise/strategies/rememberable.rb index 69066273..b1f0dadd 100644 --- a/lib/devise/strategies/rememberable.rb +++ b/lib/devise/strategies/rememberable.rb @@ -27,6 +27,7 @@ module Devise if validate(resource) remember_me(resource) extend_remember_me_period(resource) + resource.after_remembered success!(resource) end end diff --git a/test/integration/rememberable_test.rb b/test/integration/rememberable_test.rb index 718a7146..a762eb11 100644 --- a/test/integration/rememberable_test.rb +++ b/test/integration/rememberable_test.rb @@ -164,4 +164,13 @@ class RememberMeTest < ActionDispatch::IntegrationTest 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