From 9d15b87abdd55f54c0d59e0823583d7aa84cd4b4 Mon Sep 17 00:00:00 2001 From: Felix Jankowski Date: Sat, 21 Feb 2015 20:52:11 +0100 Subject: [PATCH 1/2] Allow to register helpers and settings without controllers --- lib/padrino/warden.rb | 6 ++++-- lib/padrino/warden/controller.rb | 2 +- lib/padrino/warden/helpers.rb | 5 +++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/padrino/warden.rb b/lib/padrino/warden.rb index 103ff12..e4113ee 100644 --- a/lib/padrino/warden.rb +++ b/lib/padrino/warden.rb @@ -8,7 +8,7 @@ module Padrino module Warden - def self.registered(app) + def self.registered(app, register_controller = true) # Enable Sessions app.set :sessions, true unless app.sessions app.set :auth_failure_path, '/' @@ -41,7 +41,9 @@ def self.registered(app) app.warden_config manager end - Controller.registered app + if register_controller + Controller.registered app + end app.helpers Helpers end end diff --git a/lib/padrino/warden/controller.rb b/lib/padrino/warden/controller.rb index d44b108..ce74564 100644 --- a/lib/padrino/warden/controller.rb +++ b/lib/padrino/warden/controller.rb @@ -25,7 +25,7 @@ def self.registered(app) post :login , map: app.auth_login_path do authenticate flash[:success] = settings.auth_success_message if flash - redirect settings.auth_use_referrer && session[:return_to] ? session.delete(:return_to) : + redirect settings.auth_use_referrer && session[:return_to] ? session.delete(:return_to) : settings.auth_success_path end diff --git a/lib/padrino/warden/helpers.rb b/lib/padrino/warden/helpers.rb index bc935bb..f93cfde 100644 --- a/lib/padrino/warden/helpers.rb +++ b/lib/padrino/warden/helpers.rb @@ -51,6 +51,11 @@ def user=(new_user, opts={}) warden.set_user(new_user, opts) end alias_method :current_user=, :user= + + # Register the helpers directly without the controller (useful for MultiApp environments) + def self.registered(app) + Padrino::Warden.registered(app, false) + end end # helpers end # Warden end # Padrino From bc196653535ffe018763e7b5e73a4ea786c2dd1d Mon Sep 17 00:00:00 2001 From: Felix Jankowski Date: Sun, 22 Feb 2015 19:08:39 +0100 Subject: [PATCH 2/2] Clarified the readme and fixed a configuration issue across apps --- README.md | 18 +++++++++++++++--- lib/padrino/warden.rb | 2 +- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 7653733..e4766e2 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,9 @@ After login you can fiddle with *current\_user* for anything you need. ## Multi Sub-Apps -You UserApp(/user): +padrino-warden can be used across multiple apps in one project. You need to have one UserApp which handles logins and logouts. + +Add this to your UserApp(/user): ```ruby register Padrino::Warden @@ -74,7 +76,17 @@ You OtherApps: register Padrino::Warden::Helpers ``` -But you must apply the same options in your UserApp. +Configure warden globally within config/apps.rb. Don't forget to tell warden about the UserApp: + +```ruby +Padrino.configure_apps do + ... + set :warden_failure_app, UserApp +end +``` + +Your UserApp needs to be mounted first in Padrino! Cascading routes from the UserApp can cause exceptions, so don't use an app mounted to the root path ('/') as UserApp. + ## Overriding warden manager defaults @@ -99,7 +111,7 @@ end ``` ## Note on Patches/Pull Requests - + * Fork the project. * Make your feature addition or bug fix. * Add tests for it. This is important so I don't break it in a diff --git a/lib/padrino/warden.rb b/lib/padrino/warden.rb index e4113ee..09b88b5 100644 --- a/lib/padrino/warden.rb +++ b/lib/padrino/warden.rb @@ -31,7 +31,7 @@ def self.registered(app, register_controller = true) app.set :auth_use_oauth, false app.set :default_strategies, [:password] unless app.respond_to?(:default_strategies) - app.set :warden_failure_app, app + app.set :warden_failure_app, app unless app.respond_to?(:warden_failure_app) app.set :warden_default_scope, :session app.set(:warden_config) { |manager| nil } app.use ::Warden::Manager do |manager|