mirror of
https://github.com/heartcombo/devise.git
synced 2022-11-09 12:18:31 -05:00
FailureApp shuold always consider Devise.router_name, closes #1544
This commit is contained in:
parent
f4bbad6323
commit
a949f9eca2
4 changed files with 33 additions and 8 deletions
|
@ -16,7 +16,15 @@ module Devise
|
|||
# new_confirmation_path(:user) => new_user_confirmation_path
|
||||
# confirmation_path(:user) => user_confirmation_path
|
||||
#
|
||||
# Those helpers are added to your ApplicationController.
|
||||
# Those helpers are included by default to ActionController::Base.
|
||||
#
|
||||
# In case you want to add such helpers to another class, you can do
|
||||
# that as long as this new class includes both url_helpers and
|
||||
# mounted_helpers. Example:
|
||||
#
|
||||
# include Rails.application.routes.url_helpers
|
||||
# include Rails.application.routes.mounted_helpers
|
||||
#
|
||||
module UrlHelpers
|
||||
def self.remove_helpers!
|
||||
self.instance_methods.map(&:to_s).grep(/_(url|path)$/).each do |method|
|
||||
|
|
|
@ -9,7 +9,9 @@ module Devise
|
|||
include ActionController::RackDelegation
|
||||
include ActionController::UrlFor
|
||||
include ActionController::Redirecting
|
||||
|
||||
include Rails.application.routes.url_helpers
|
||||
include Rails.application.routes.mounted_helpers
|
||||
|
||||
delegate :flash, :to => :request
|
||||
|
||||
|
@ -73,8 +75,10 @@ module Devise
|
|||
route = :"new_#{scope}_session_path"
|
||||
opts[:format] = request_format unless skip_format?
|
||||
|
||||
if respond_to?(route)
|
||||
send(route, opts)
|
||||
context = send(Devise.router_name)
|
||||
|
||||
if context.respond_to?(route)
|
||||
context.send(route, opts)
|
||||
elsif respond_to?(:root_path)
|
||||
root_path(opts)
|
||||
else
|
||||
|
|
|
@ -42,6 +42,15 @@ module Devise
|
|||
end
|
||||
end
|
||||
|
||||
initializer "devise.fix_routes_proxy_missing_respond_to_bug" do
|
||||
# We can get rid of this once we support Rails > 3.2
|
||||
ActionDispatch::Routing::RoutesProxy.class_eval do
|
||||
def respond_to?(method, include_private = false)
|
||||
super || routes.url_helpers.respond_to?(method)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
initializer "devise.deprecations" do
|
||||
unless defined?(Rails::Generators)
|
||||
if Devise.case_insensitive_keys == false
|
||||
|
|
|
@ -3,7 +3,9 @@ require 'ostruct'
|
|||
|
||||
class FailureTest < ActiveSupport::TestCase
|
||||
class RootFailureApp < Devise::FailureApp
|
||||
undef_method :new_user_session_path
|
||||
def fake_app
|
||||
Object.new
|
||||
end
|
||||
end
|
||||
|
||||
def self.context(name, &block)
|
||||
|
@ -41,10 +43,12 @@ class FailureTest < ActiveSupport::TestCase
|
|||
end
|
||||
|
||||
test 'return to the root path if no session path is available' do
|
||||
call_failure :app => RootFailureApp
|
||||
assert_equal 302, @response.first
|
||||
assert_equal 'You need to sign in or sign up before continuing.', @request.flash[:alert]
|
||||
assert_equal 'http://test.host/', @response.second['Location']
|
||||
swap Devise, :router_name => :fake_app do
|
||||
call_failure :app => RootFailureApp
|
||||
assert_equal 302, @response.first
|
||||
assert_equal 'You need to sign in or sign up before continuing.', @request.flash[:alert]
|
||||
assert_equal 'http://test.host/', @response.second['Location']
|
||||
end
|
||||
end
|
||||
|
||||
test 'uses the proxy failure message as symbol' do
|
||||
|
|
Loading…
Reference in a new issue