Compare commits

...

5 Commits

Author SHA1 Message Date
José Valim
f2cd983b4f Merge pull request #1750 from 0x000000/v1.0
Added ability to override redirect_to path after sending reset password ...
2012-03-29 09:38:09 -07:00
Alexander Rudenko
873d8dcf8a Skip the tests for PasswordsController#after_sending_reset_password_instructions_path_for hook 2012-03-29 19:31:21 +03:00
Alexander Rudenko
ddec656738 Added ability to override redirect_to path after sending reset password instructions 2012-03-29 19:02:14 +03:00
José Valim
efc42d7662 Merge pull request #1142 from rosenfeld/v1.0
V1.0
2011-06-16 02:03:36 -07:00
Rodrigo Rosenfeld Rosas
d39f94e330 Add cookie_options Devise config for Rememberable strategy 2011-06-15 23:04:39 -03:00
5 changed files with 31 additions and 5 deletions

View File

@@ -14,7 +14,7 @@ class PasswordsController < ApplicationController
if resource.errors.empty?
set_flash_message :notice, :send_instructions
redirect_to new_session_path(resource_name)
redirect_to after_sending_reset_password_instructions_path_for(resource_name)
else
render_with_scope :new
end
@@ -38,4 +38,10 @@ class PasswordsController < ApplicationController
render_with_scope :edit
end
end
protected
def after_sending_reset_password_instructions_path_for(resource_name)
new_session_path(resource_name)
end
end

View File

@@ -72,6 +72,10 @@ module Devise
# Email regex used to validate email formats. Adapted from authlogic.
EMAIL_REGEX = /^([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})$/i
# Custom domain for cookies. Not set by default
mattr_accessor :cookie_options
@@cookie_options = {}
# Used to encrypt password. Please generate one with rake secret.
mattr_accessor :pepper
@@pepper = nil

View File

@@ -11,11 +11,13 @@ Warden::Manager.prepend_after_authentication do |record, warden, options|
warden.authenticated?(scope) && record.respond_to?(:remember_me!)
record.remember_me!
warden.response.set_cookie "remember_#{scope}_token", {
cookie_options = {
:value => record.class.serialize_into_cookie(record),
:expires => record.remember_expires_at,
:path => "/"
}
}.merge record.cookie_options
warden.response.set_cookie "remember_#{scope}_token", cookie_options
end
end
@@ -30,4 +32,4 @@ Warden::Manager.before_logout do |record, warden, options|
record.forget_me! unless record.frozen?
warden.response.delete_cookie "remember_#{scope}_token", :path => "/"
end
end
end

View File

@@ -19,6 +19,9 @@ module Devise
# time for the cookie created to remember the user.
# By default remember_for is 2.weeks.
#
# cookie_options: configuration options passed to the created cookie.
#
#
# Examples:
#
# User.find(1).remember_me! # regenerating the token
@@ -72,6 +75,10 @@ module Devise
remember_created_at + self.class.remember_for
end
def cookie_options
self.class.cookie_options
end
module ClassMethods
# Create the cookie key using the record id and remember_token
def serialize_into_cookie(record)
@@ -85,7 +92,7 @@ module Devise
record if record.try(:valid_remember_token?, record_token)
end
Devise::Models.config(self, :remember_for)
Devise::Models.config(self, :remember_for, :cookie_options)
end
end
end

View File

@@ -20,6 +20,13 @@ class RememberMeTest < ActionController::IntegrationTest
assert_not_nil user.reload.remember_token
end
test 'cookie_options should be applied to cookies' do
swap Devise, :cookie_options => { :value => 'dont-do-that' } do
user = sign_in_as_user :remember_me => true
assert_equal 'dont-do-that', cookies['remember_user_token']
end
end
test 'remember the user before sign in' do
user = create_user_and_remember
get users_path