From f805e8c359b18bd0254eaa774171ff7938ee8165 Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Wed, 5 Jan 2011 11:18:57 -0500 Subject: [PATCH] This should fix issue with mongoid consumer_token. It isn't well tested please report back. --- generators/oauth_consumer/templates/controller.rb | 4 ++++ .../mongoid/oauth_consumer_templates/consumer_token.rb | 9 +++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/generators/oauth_consumer/templates/controller.rb b/generators/oauth_consumer/templates/controller.rb index 2bea80d3..b3c171d6 100644 --- a/generators/oauth_consumer/templates/controller.rb +++ b/generators/oauth_consumer/templates/controller.rb @@ -7,6 +7,10 @@ def index @services=OAUTH_CREDENTIALS.keys-@consumer_tokens.collect{|c| c.class.service_name} end + def callback + super + end + protected # Change this to decide where you want to redirect user to after callback is finished. diff --git a/lib/generators/mongoid/oauth_consumer_templates/consumer_token.rb b/lib/generators/mongoid/oauth_consumer_templates/consumer_token.rb index 0d491908..a5956e63 100644 --- a/lib/generators/mongoid/oauth_consumer_templates/consumer_token.rb +++ b/lib/generators/mongoid/oauth_consumer_templates/consumer_token.rb @@ -18,20 +18,21 @@ class ConsumerToken # index "consumer_tokens.token" # embedded_in :user, :inverse_of => :consumer_tokens - + def self.find_or_create_from_access_token(user,access_token) if user user.consumer_tokens.first(:conditions=>{:_type=>self.to_s,:token=>access_token.token}) || user.consumer_tokens.create!(:_type=>self.to_s,:token=>access_token.token, :secret=>access_token.secret) else # Is there a better way of doing this in mongoid? - # Please submit a patch - user = User.first(:conditions=>{:_type=>self.to_s,"consumer_tokens.token"=>access_token.token}) + user = User.first(:conditions=>{"consumer_tokens._type"=>self.to_s,"consumer_tokens.token"=>access_token.token}) if user user.consumer_tokens.detect{|t| t.token==access_token.token && t.is_a?(self)} else - user = User.create + user = User.new user.consumer_tokens.create!(:_type=>self.to_s,:token=>access_token.token, :secret=>access_token.secret) + user.save! + user.consumer_tokens.last end end end