diff --git a/lib/omniauth/flexible_strategy.rb b/lib/omniauth/flexible_strategy.rb index ee37b52d3f..3b853982cb 100644 --- a/lib/omniauth/flexible_strategy.rb +++ b/lib/omniauth/flexible_strategy.rb @@ -40,14 +40,14 @@ module OmniAuth module FlexibleStrategy def on_auth_path? - (match_provider! || false) && super + possible_auth_path? && (match_provider! || false) && super end ## # Tries to match the request path of the current request with one of the registered providers. # If a match is found the strategy is intialised with that provider to handle the request. def match_provider! - return false unless @providers + return false unless providers @provider = providers.find do |p| (current_path =~ /#{path_for_provider(p.to_hash[:name])}/) == 0 @@ -72,6 +72,13 @@ module OmniAuth "#{path_prefix}/#{name}" end + ## + # Returns true if the current path could be an authentication request, + # false otherwise (e.g. for resources). + def possible_auth_path? + current_path =~ /\A#{path_prefix}/ + end + def providers @providers ||= OpenProject::Plugins::AuthPlugin.providers_for(self.class) end @@ -87,7 +94,6 @@ module OmniAuth def dup super.tap do |s| s.extend FlexibleStrategy - s.providers = providers end end end diff --git a/lib/open_project/auth_plugins/version.rb b/lib/open_project/auth_plugins/version.rb index 7f57339187..b64fbe4828 100644 --- a/lib/open_project/auth_plugins/version.rb +++ b/lib/open_project/auth_plugins/version.rb @@ -29,6 +29,6 @@ module OpenProject module AuthPlugins - VERSION = '4.0.0' + VERSION = '4.1.0' end end