lib/oauth/controllers/application_controller_methods.rb in oauth-plugin-0.4.0.rc2 vs lib/oauth/controllers/application_controller_methods.rb in oauth-plugin-0.4.0

- old
+ new

@@ -1,55 +1,55 @@ module OAuth module Controllers - + module ApplicationControllerMethods - + def self.included(controller) - controller.class_eval do + controller.class_eval do extend ClassMethods end end - + module ClassMethods def oauthenticate(options={}) filter_options = {} filter_options[:only] = options.delete(:only) if options[:only] filter_options[:except] = options.delete(:except) if options[:except] before_filter Filter.new(options), filter_options end end - + class Filter def initialize(options={}) @options={ :interactive=>true, :strategies => [:token,:two_legged] }.merge(options) @strategies = Array(@options[:strategies]) @strategies << :interactive if @options[:interactive] end - + def filter(controller) Authenticator.new(controller,@strategies).allow? end end - + class Authenticator attr_accessor :controller, :strategies, :strategy def initialize(controller,strategies) @controller = controller @strategies = strategies end - + def allow? if @strategies.include?(:interactive) && interactive true elsif !(@strategies & env["oauth.strategies"].to_a).empty? @controller.send :current_user=, token.user if token true else - if @strategies.include?(:interactive) + if @strategies.include?(:interactive) controller.send :access_denied else controller.send :invalid_oauth_response end end @@ -68,11 +68,11 @@ end def oauth10_access_token oauth10_token && oauth10_token.is_a?(::AccessToken) ? oauth10_token : nil end - + def token oauth20_token || oauth10_access_token || nil end def client_application @@ -80,11 +80,11 @@ end def two_legged env["oauth.version"]==1 && client_application end - + def interactive @controller.send :logged_in? end def env @@ -94,39 +94,39 @@ def request controller.send :request end end - + protected - + def current_token request.env["oauth.token"] end - + def current_client_application request.env["oauth.version"]==1 && request.env["oauth.client_application"] || current_token.try(:client_application) end - + def oauth? current_token end - + # use in a before_filter. Note this is for compatibility purposes. Better to use oauthenticate now def oauth_required Authenticator.new(self,[:oauth10_access_token]).allow? end - + # use in before_filter. Note this is for compatibility purposes. Better to use oauthenticate now def login_or_oauth_required Authenticator.new(self,[:oauth10_access_token,:interactive]).allow? end - + def invalid_oauth_response(code=401,message="Invalid OAuth Request") render :text => message, :status => code false end - + # override this in your controller def access_denied head 401 end \ No newline at end of file