lib/warden/github/rails/railtie.rb in warden-github-rails-0.0.1 vs lib/warden/github/rails/railtie.rb in warden-github-rails-1.0.0
- old
+ new
@@ -1,24 +1,39 @@
module Warden
module GitHub
module Rails
class Railtie < ::Rails::Railtie
- config.app_middleware.use Warden::Manager do |config|
- config.failure_app = lambda { |env| [403, {}, [env['warden'].message]] }
- Rails.warden_config = config
- Rails.scopes.each do |scope, scope_config|
- config.scope_defaults scope, :strategies => [:github],
- :config => scope_config
+ initializer 'warden-github-rails.warden' do |app|
+ # When devise is used, it inserts a warden middlware. Multiple warden
+ # middlewares do not work properly. Devise allows for a block to be
+ # specified that is invoked when its warden middleware is configured.
+ # This makes it possible to setup warden-github-rails through devise.
+ if defined?(::Devise)
+ ::Devise.warden { |config| setup_scopes(config) }
+ else
+ app.config.middleware.use Warden::Manager do |config|
+ setup_failure_app(config)
+ setup_scopes(config)
+ end
end
end
- initializer 'warden-github-rails.controller_helpers' do
+ initializer 'warden-github-rails.helpers' do
ActiveSupport.on_load(:action_controller) do
include ControllerHelpers
end
+ end
- ActiveSupport.on_load(:action_view) do
- include ViewHelpers
+ def setup_scopes(config)
+ Rails.scopes.each do |scope, scope_config|
+ config.scope_defaults scope, :strategies => [:github],
+ :config => scope_config
+ end
+ end
+
+ def setup_failure_app(config)
+ config.failure_app = lambda do |env|
+ [403, {}, [env['warden'].message]]
end
end
end
end
end