oauth-plugin 0.4.0.pre2 → 0.4.0.pre3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +8 -0
- data/CHANGELOG +7 -2
- data/Gemfile +4 -0
- data/Rakefile +2 -43
- data/UPGRADE.rdoc +21 -0
- data/VERSION +1 -1
- data/lib/generators/active_record/oauth_consumer_templates/consumer_token.rb +6 -0
- data/lib/generators/mongoid/oauth_consumer_templates/consumer_token.rb +27 -2
- data/lib/generators/oauth_consumer/USAGE +5 -2
- data/lib/generators/oauth_consumer/templates/controller.rb +31 -0
- data/lib/generators/oauth_consumer/templates/oauth_config.rb +2 -1
- data/lib/oauth/controllers/application_controller_methods.rb +49 -23
- data/lib/oauth/controllers/consumer_controller.rb +18 -6
- data/lib/oauth/models/consumers/service_loader.rb +1 -0
- data/lib/oauth/models/consumers/services/opentransact_token.rb +15 -0
- data/lib/oauth/models/consumers/services/picomoney_token.rb +17 -0
- data/lib/oauth/models/consumers/token.rb +29 -4
- data/lib/oauth/rack/oauth_filter.rb +50 -0
- data/lib/oauth-plugin/version.rb +5 -0
- data/lib/oauth-plugin.rb +22 -1
- data/oauth-plugin.gemspec +11 -179
- data/rails/init.rb +1 -11
- metadata +38 -5
data/.gitignore
ADDED
data/CHANGELOG
CHANGED
@@ -1,5 +1,10 @@
|
|
1
|
-
0.4.0
|
2
|
-
-
|
1
|
+
0.4.0-pre3
|
2
|
+
- Experimental rack filter for OAuth 1.0a:
|
3
|
+
see lib/oauth/rack/oauth_filter.rb for details
|
4
|
+
0.4.0-pre2
|
5
|
+
- mongoid defaults to being embedded
|
6
|
+
- new :auto_login option in oauth_config.rb which lets you use eg. twitter as a primary authentication method
|
7
|
+
0.4.0-pre1
|
3
8
|
- mongoid support in rails 3 [Alexander Semyonov]
|
4
9
|
- OAUTH 2.0 authorization_code and password grant types
|
5
10
|
- Supports OAuth 2.0 draft 10 (Note this is incompatible with previous drafts)
|
data/Gemfile
ADDED
data/Rakefile
CHANGED
@@ -1,43 +1,2 @@
|
|
1
|
-
require '
|
2
|
-
|
3
|
-
require 'rake/rdoctask'
|
4
|
-
|
5
|
-
desc 'Default: run unit tests.'
|
6
|
-
task :default => :test
|
7
|
-
|
8
|
-
desc 'Test the oauth plugin.'
|
9
|
-
Rake::TestTask.new(:test) do |t|
|
10
|
-
t.libs << 'lib'
|
11
|
-
t.pattern = 'test/**/*_test.rb'
|
12
|
-
t.verbose = true
|
13
|
-
end
|
14
|
-
|
15
|
-
desc 'Generate documentation for the oauth plugin.'
|
16
|
-
Rake::RDocTask.new(:rdoc) do |rdoc|
|
17
|
-
rdoc.rdoc_dir = 'rdoc'
|
18
|
-
rdoc.title = 'OAuth Plugin'
|
19
|
-
rdoc.options << '--line-numbers' << '--inline-source'
|
20
|
-
rdoc.rdoc_files.include('README')
|
21
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
22
|
-
end
|
23
|
-
|
24
|
-
begin
|
25
|
-
require 'jeweler'
|
26
|
-
Jeweler::Tasks.new do |gemspec|
|
27
|
-
gemspec.name = "oauth-plugin"
|
28
|
-
gemspec.summary = "Ruby on Rails Plugin for OAuth Provider and Consumer"
|
29
|
-
gemspec.description = "Rails plugin for implementing an OAuth Provider or Consumer"
|
30
|
-
gemspec.email = "oauth-ruby@googlegroups.com"
|
31
|
-
gemspec.homepage = "http://github.com/pelle/oauth-plugin"
|
32
|
-
gemspec.authors = ["Pelle Braendgaard"]
|
33
|
-
gemspec.add_dependency('oauth', '>= 0.4.4')
|
34
|
-
gemspec.rubyforge_project = 'oauth'
|
35
|
-
end
|
36
|
-
|
37
|
-
Jeweler::RubyforgeTasks.new do |rubyforge|
|
38
|
-
rubyforge.doc_task = "rdoc"
|
39
|
-
end
|
40
|
-
|
41
|
-
rescue LoadError
|
42
|
-
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
43
|
-
end
|
1
|
+
require 'bundler'
|
2
|
+
Bundler::GemHelper.install_tasks
|
data/UPGRADE.rdoc
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
A few non backwards compatible changes have been made that are really easy to fix.
|
2
|
+
|
3
|
+
If you are upgrading a oauth_consumer from 0.3.x to 0.4.x add the following line to your consumer_token model:
|
4
|
+
|
5
|
+
belongs_to :user
|
6
|
+
|
7
|
+
So it looks like this:
|
8
|
+
|
9
|
+
require 'oauth/models/consumers/token'
|
10
|
+
class ConsumerToken < ActiveRecord::Base
|
11
|
+
include Oauth::Models::Consumers::Token
|
12
|
+
belongs_to :user
|
13
|
+
end
|
14
|
+
|
15
|
+
You should also upgrade your oauth_consumer_controller as we no longer call login_required in the library. This should make it easier for implementing it with other authentication frameworks:
|
16
|
+
|
17
|
+
require 'oauth/controllers/consumer_controller'
|
18
|
+
class OauthConsumersController < ApplicationController
|
19
|
+
include Oauth::Controllers::ConsumerController
|
20
|
+
# Replace this with the equivalent for your authentication framework
|
21
|
+
before_filter :login_required, :only=>:index
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.0.
|
1
|
+
0.4.0.pre3
|
@@ -1,5 +1,11 @@
|
|
1
1
|
require 'oauth/models/consumers/token'
|
2
2
|
class ConsumerToken < ActiveRecord::Base
|
3
3
|
include Oauth::Models::Consumers::Token
|
4
|
+
|
5
|
+
# You can safely remove this callback if you don't allow login from any of your services
|
6
|
+
before_create :create_user
|
7
|
+
|
8
|
+
# Modify this with class_name etc to match your application
|
4
9
|
belongs_to :user
|
10
|
+
|
5
11
|
end
|
@@ -3,12 +3,37 @@ class ConsumerToken
|
|
3
3
|
include Mongoid::Document
|
4
4
|
include Mongoid::Timestamps
|
5
5
|
include Oauth::Models::Consumers::Token
|
6
|
+
|
7
|
+
# You can safely remove this callback if you don't allow login from any of your services
|
8
|
+
before_create :create_user
|
6
9
|
|
7
10
|
field :token, :type => String
|
8
11
|
field :secret, :type => String
|
9
12
|
|
10
|
-
index :token
|
13
|
+
index :token
|
11
14
|
|
12
|
-
|
15
|
+
# Add the following to your user model:
|
16
|
+
#
|
17
|
+
# embeds_many :consumer_tokens
|
18
|
+
# index "consumer_tokens.token"
|
19
|
+
#
|
20
|
+
embedded_in :user, :inverse_of => :consumer_tokens
|
21
|
+
|
22
|
+
def self.find_or_create_from_access_token(user,access_token)
|
23
|
+
if user
|
24
|
+
user.consumer_tokens.first(:conditions=>{:_type=>self.to_s,:token=>access_token.token}) ||
|
25
|
+
user.consumer_tokens.create!(:_type=>self.to_s,:token=>access_token.token, :secret=>access_token.secret)
|
26
|
+
else
|
27
|
+
# Is there a better way of doing this in mongoid?
|
28
|
+
# Please submit a patch
|
29
|
+
user = User.first(:conditions=>{:_type=>self.to_s,"consumer_tokens.token"=>access_token.token})
|
30
|
+
if user
|
31
|
+
user.consumer_tokens.detect{|t| t.token==access_token.token && t.is_a?(self)}
|
32
|
+
else
|
33
|
+
user = User.create
|
34
|
+
user.consumer_tokens.create!(:_type=>self.to_s,:token=>access_token.token, :secret=>access_token.secret)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
13
38
|
|
14
39
|
end
|
@@ -1,8 +1,11 @@
|
|
1
|
-
This creates an OAuth
|
1
|
+
This creates an OAuth Consumer controller as well as requisite models.
|
2
2
|
|
3
3
|
It requires an authentication framework such as acts_as_authenticated, restful_authentication or restful_open_id_authentication that provides the methods "login_required" and "current_user".
|
4
4
|
|
5
|
+
See comments in generated controller for more info about overriding these.
|
6
|
+
|
5
7
|
If you generated the migration file (true by default), make sure you run
|
6
|
-
|
8
|
+
|
9
|
+
rake db:migrate
|
7
10
|
|
8
11
|
See README.rdoc for more.
|
@@ -1,6 +1,11 @@
|
|
1
1
|
require 'oauth/controllers/consumer_controller'
|
2
2
|
class OauthConsumersController < ApplicationController
|
3
3
|
include Oauth::Controllers::ConsumerController
|
4
|
+
# Replace this with the equivalent for your authentication framework
|
5
|
+
# Eg. for devise
|
6
|
+
#
|
7
|
+
# before_filter :authenticate_user!, :only=>:index
|
8
|
+
before_filter :login_required, :only=>:index
|
4
9
|
|
5
10
|
def index
|
6
11
|
@consumer_tokens=ConsumerToken.all :conditions=>{:user_id=>current_user.id}
|
@@ -16,4 +21,30 @@ class OauthConsumersController < ApplicationController
|
|
16
21
|
redirect_to root_url
|
17
22
|
end
|
18
23
|
|
24
|
+
# The plugin requires logged_in? to return true or false if the user is logged in. Uncomment and
|
25
|
+
# call your auth frameworks equivalent below if different. eg. for devise:
|
26
|
+
#
|
27
|
+
# def logged_in?
|
28
|
+
# user_signed_in?
|
29
|
+
# end
|
30
|
+
|
31
|
+
# The plugin requires current_user to return the current logged in user. Uncomment and
|
32
|
+
# call your auth frameworks equivalent below if different.
|
33
|
+
# def current_user
|
34
|
+
# current_person
|
35
|
+
# end
|
36
|
+
|
37
|
+
# The plugin requires a way to log a user in. Call your auth frameworks equivalent below
|
38
|
+
# if different. eg. for devise:
|
39
|
+
#
|
40
|
+
# def current_user=(user)
|
41
|
+
# sign_in(user)
|
42
|
+
# end
|
43
|
+
|
44
|
+
# Override this to deny the user or redirect to a login screen depending on your framework and app
|
45
|
+
# if different. eg. for devise:
|
46
|
+
#
|
47
|
+
# def deny_access!
|
48
|
+
# raise Acl9::AccessDenied
|
49
|
+
# end
|
19
50
|
end
|
@@ -44,10 +44,19 @@ module OAuth
|
|
44
44
|
def params
|
45
45
|
controller.send :params
|
46
46
|
end
|
47
|
+
|
47
48
|
def request
|
48
49
|
controller.send :request
|
49
50
|
end
|
50
51
|
|
52
|
+
def env
|
53
|
+
request.env
|
54
|
+
end
|
55
|
+
|
56
|
+
def using_rack_filter?
|
57
|
+
request.env["oauth_plugin"]
|
58
|
+
end
|
59
|
+
|
51
60
|
def allow?
|
52
61
|
if @strategies.any? do |strategy|
|
53
62
|
@strategy = strategy.to_sym
|
@@ -77,22 +86,32 @@ module OAuth
|
|
77
86
|
end
|
78
87
|
|
79
88
|
def oauth10_token
|
80
|
-
|
81
|
-
if
|
82
|
-
|
83
|
-
if @oauth_token.respond_to?(:provided_oauth_verifier=)
|
84
|
-
@oauth_token.provided_oauth_verifier=request_proxy.oauth_verifier
|
85
|
-
end
|
86
|
-
# return the token secret and the consumer secret
|
87
|
-
[(@oauth_token.nil? ? nil : @oauth_token.secret), (@oauth_token.client_application.nil? ? nil : @oauth_token.client_application.secret)]
|
88
|
-
end
|
89
|
+
if using_rack_filter?
|
90
|
+
if env["oauth.token"]
|
91
|
+
@oauth_token = env["oauth.token"]
|
89
92
|
controller.send :current_token=, @oauth_token
|
90
93
|
true
|
91
94
|
else
|
92
95
|
false
|
93
96
|
end
|
94
|
-
|
95
|
-
|
97
|
+
else
|
98
|
+
begin
|
99
|
+
if ClientApplication.verify_request(request) do |request_proxy|
|
100
|
+
@oauth_token = ClientApplication.find_token(request_proxy.token)
|
101
|
+
if @oauth_token.respond_to?(:provided_oauth_verifier=)
|
102
|
+
@oauth_token.provided_oauth_verifier=request_proxy.oauth_verifier
|
103
|
+
end
|
104
|
+
# return the token secret and the consumer secret
|
105
|
+
[(@oauth_token.nil? ? nil : @oauth_token.secret), (@oauth_token.client_application.nil? ? nil : @oauth_token.client_application.secret)]
|
106
|
+
end
|
107
|
+
controller.send :current_token=, @oauth_token
|
108
|
+
true
|
109
|
+
else
|
110
|
+
false
|
111
|
+
end
|
112
|
+
rescue
|
113
|
+
false
|
114
|
+
end
|
96
115
|
end
|
97
116
|
end
|
98
117
|
|
@@ -109,23 +128,30 @@ module OAuth
|
|
109
128
|
end
|
110
129
|
|
111
130
|
def two_legged
|
112
|
-
|
113
|
-
if
|
114
|
-
|
131
|
+
if using_rack_filter?
|
132
|
+
if env["oauth.client_application"]
|
133
|
+
@client_application = env["oauth.client_application"]
|
134
|
+
controller.send :current_client_application=, @client_application
|
135
|
+
end
|
136
|
+
else
|
137
|
+
begin
|
138
|
+
if ClientApplication.verify_request(request) do |request_proxy|
|
139
|
+
@client_application = ClientApplication.find_by_key(request_proxy.consumer_key)
|
115
140
|
|
116
|
-
|
117
|
-
|
141
|
+
# Store this temporarily in client_application object for use in request token generation
|
142
|
+
@client_application.token_callback_url=request_proxy.oauth_callback if request_proxy.oauth_callback
|
118
143
|
|
119
|
-
|
120
|
-
|
144
|
+
# return the token secret and the consumer secret
|
145
|
+
[nil, @client_application.secret]
|
146
|
+
end
|
147
|
+
controller.send :current_client_application=, @client_application
|
148
|
+
true
|
149
|
+
else
|
150
|
+
false
|
121
151
|
end
|
122
|
-
|
123
|
-
true
|
124
|
-
else
|
152
|
+
rescue
|
125
153
|
false
|
126
154
|
end
|
127
|
-
rescue
|
128
|
-
false
|
129
155
|
end
|
130
156
|
end
|
131
157
|
|
@@ -3,7 +3,6 @@ module Oauth
|
|
3
3
|
module ConsumerController
|
4
4
|
def self.included(controller)
|
5
5
|
controller.class_eval do
|
6
|
-
before_filter :login_required
|
7
6
|
before_filter :load_consumer, :except=>:index
|
8
7
|
skip_before_filter :verify_authenticity_token,:only=>:callback
|
9
8
|
end
|
@@ -13,8 +12,7 @@ module Oauth
|
|
13
12
|
@consumer_tokens=ConsumerToken.all :conditions=>{:user_id=>current_user.id}
|
14
13
|
# The services the user hasn't already connected to
|
15
14
|
@services=OAUTH_CREDENTIALS.keys-@consumer_tokens.collect{|c| c.class.service_name}
|
16
|
-
end
|
17
|
-
|
15
|
+
end
|
18
16
|
|
19
17
|
# creates request token and redirects on to oauth provider's auth page
|
20
18
|
# If user is already connected it displays a page with an option to disconnect and redo
|
@@ -31,11 +29,19 @@ module Oauth
|
|
31
29
|
end
|
32
30
|
|
33
31
|
def callback
|
32
|
+
logger.info "CALLBACK"
|
34
33
|
@request_token_secret=session[params[:oauth_token]]
|
35
34
|
if @request_token_secret
|
36
|
-
@token=@consumer.
|
35
|
+
@token=@consumer.find_or_create_from_request_token(current_user,params[:oauth_token],@request_token_secret,params[:oauth_verifier])
|
36
|
+
session[params[:oauth_token]] = nil
|
37
37
|
if @token
|
38
|
-
|
38
|
+
# Log user in
|
39
|
+
if logged_in?
|
40
|
+
flash[:notice] = "#{params[:id].humanize} was successfully connected to your account"
|
41
|
+
else
|
42
|
+
self.current_user = @token.user
|
43
|
+
flash[:notice] = "You logged in with #{params[:id].humanize}"
|
44
|
+
end
|
39
45
|
go_back
|
40
46
|
else
|
41
47
|
flash[:error] = "An error happened, please try connecting again"
|
@@ -67,8 +73,14 @@ module Oauth
|
|
67
73
|
def load_consumer
|
68
74
|
consumer_key=params[:id].to_sym
|
69
75
|
throw RecordNotFound unless OAUTH_CREDENTIALS.include?(consumer_key)
|
76
|
+
deny_access! unless logged_in? || OAUTH_CREDENTIALS[consumer_key][:allow_login]
|
70
77
|
@consumer="#{consumer_key.to_s.camelcase}Token".constantize
|
71
|
-
@token=@consumer.find_by_user_id current_user.id
|
78
|
+
@token=@consumer.find_by_user_id current_user.id if logged_in?
|
79
|
+
end
|
80
|
+
|
81
|
+
# Override this in you controller to deny user or redirect to login screen.
|
82
|
+
def deny_access!
|
83
|
+
head 401
|
72
84
|
end
|
73
85
|
|
74
86
|
end
|
@@ -10,6 +10,7 @@ if defined? ConsumerToken && defined? OAUTH_CREDENTIALS
|
|
10
10
|
class_name=value[:class_name]||"#{key.to_s.classify}Token"
|
11
11
|
unless Object.const_defined?(class_name.to_sym)
|
12
12
|
if File.exists?(File.join(File.dirname(__FILE__), "services","#{key.to_s}_token.rb"))
|
13
|
+
Rails.logger.info File.join(File.dirname(__FILE__), "services","#{key.to_s}_token")
|
13
14
|
require File.join(File.dirname(__FILE__), "services","#{key.to_s}_token")
|
14
15
|
else
|
15
16
|
begin
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'opentransact'
|
2
|
+
class OpenTransactToken < ConsumerToken
|
3
|
+
|
4
|
+
# def self.server
|
5
|
+
# @consumer||=OpenTransact::Server.new credentials
|
6
|
+
# end
|
7
|
+
|
8
|
+
# def self.consumer
|
9
|
+
# @consumer||=server.consumer
|
10
|
+
# end
|
11
|
+
|
12
|
+
def client
|
13
|
+
@client ||= OpenTransact::Client.new self.class.credentials.merge( {:token=>token, :secret=>secret})
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),'opentransact_token')
|
2
|
+
|
3
|
+
class PicomoneyToken < OpenTransactToken
|
4
|
+
|
5
|
+
def self.credentials
|
6
|
+
@credentials||={
|
7
|
+
:site=>"https://picomoney.com",
|
8
|
+
:consumer_key => super[:key],
|
9
|
+
:consumer_secret => super[:secret]
|
10
|
+
}.merge(super)
|
11
|
+
end
|
12
|
+
|
13
|
+
def about_user
|
14
|
+
client.get("/about_user")
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -26,17 +26,30 @@ module Oauth
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def get_request_token(callback_url)
|
29
|
+
Rails.logger.info "OAUTH_CONSUMER #{consumer.inspect}"
|
29
30
|
consumer.get_request_token(:oauth_callback=>callback_url)
|
30
31
|
end
|
31
32
|
|
32
|
-
def
|
33
|
+
def find_or_create_from_request_token(user,token,secret,oauth_verifier)
|
33
34
|
request_token=OAuth::RequestToken.new consumer,token,secret
|
34
35
|
options={}
|
35
36
|
options[:oauth_verifier]=oauth_verifier if oauth_verifier
|
36
37
|
access_token=request_token.get_access_token options
|
37
|
-
|
38
|
+
find_or_create_from_access_token user, access_token
|
38
39
|
end
|
39
40
|
|
41
|
+
def find_or_create_from_access_token(user,access_token)
|
42
|
+
if user
|
43
|
+
user.consumer_tokens.first(:conditions=>{:type=>self.to_s,:token=>access_token.token}) ||
|
44
|
+
user.consumer_tokens.create!(:type=>self.to_s,:token=>access_token.token, :secret=>access_token.secret)
|
45
|
+
else
|
46
|
+
ConsumerToken.first( :token=>access_token.token,:type=>self.to_s) ||
|
47
|
+
create(:type=>self.to_s,:token=>access_token.token, :secret=>access_token.secret)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def build_user_from_token
|
52
|
+
end
|
40
53
|
protected
|
41
54
|
|
42
55
|
def credentials
|
@@ -50,13 +63,25 @@ module Oauth
|
|
50
63
|
# Main client for interfacing with remote service. Override this to use
|
51
64
|
# preexisting library eg. Twitter gem.
|
52
65
|
def client
|
53
|
-
@client||=OAuth::AccessToken.new
|
66
|
+
@client||=OAuth::AccessToken.new slelf.class.consumer,token,secret
|
54
67
|
end
|
55
68
|
|
56
69
|
def simple_client
|
57
|
-
@simple_client||=SimpleClient.new
|
70
|
+
@simple_client||=SimpleClient.new client
|
58
71
|
end
|
59
72
|
|
73
|
+
# Override this to return user data from service
|
74
|
+
def params_for_user
|
75
|
+
{}
|
76
|
+
end
|
77
|
+
|
78
|
+
def create_user
|
79
|
+
self.user ||= begin
|
80
|
+
User.new params_for_user
|
81
|
+
user.save(:validate=>false)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
60
85
|
end
|
61
86
|
end
|
62
87
|
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require "rack"
|
2
|
+
require "rack/request"
|
3
|
+
require "oauth/signature"
|
4
|
+
module OAuth
|
5
|
+
module Rack
|
6
|
+
|
7
|
+
# An OAuth 1.0a filter to be used together with the oauth-plugin for rails.T
|
8
|
+
# This is still experimental
|
9
|
+
#
|
10
|
+
# Add it as middleware to your config/application.rb:
|
11
|
+
#
|
12
|
+
# require 'oauth/rack/oauth_filter'
|
13
|
+
# config.middleware.use OAuth::Rack::OAuthFilter
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
class OAuthFilter
|
18
|
+
def initialize(app)
|
19
|
+
@app = app
|
20
|
+
end
|
21
|
+
|
22
|
+
def call(env)
|
23
|
+
request = ::Rack::Request.new(env)
|
24
|
+
env["oauth_plugin"]=true
|
25
|
+
if ClientApplication.verify_request(request) do |request_proxy|
|
26
|
+
client_application = ClientApplication.find_by_key(request_proxy.consumer_key)
|
27
|
+
env["oauth.client_application_candidate"] = client_application
|
28
|
+
# Store this temporarily in client_application object for use in request token generation
|
29
|
+
client_application.token_callback_url=request_proxy.oauth_callback if request_proxy.oauth_callback
|
30
|
+
|
31
|
+
oauth_token = client_application.tokens.first(:conditions=>{:token => request_proxy.token})
|
32
|
+
if oauth_token.respond_to?(:provided_oauth_verifier=)
|
33
|
+
oauth_token.provided_oauth_verifier=request_proxy.oauth_verifier
|
34
|
+
end
|
35
|
+
env["oauth.token_candidate"] = oauth_token
|
36
|
+
# return the token secret and the consumer secret
|
37
|
+
[(oauth_token.nil? ? nil : oauth_token.secret), (client_application.nil? ? nil : client_application.secret)]
|
38
|
+
end
|
39
|
+
env["oauth.token"] = env["oauth.token_candidate"]
|
40
|
+
env["oauth.client_application"] = env["oauth.client_application_candidate"]
|
41
|
+
# Rails.logger.info "oauth.token = #{env["oauth.token"].inspect}"
|
42
|
+
end
|
43
|
+
env["oauth.client_application_candidate"] = nil
|
44
|
+
env["oauth.token_candidate"] = nil
|
45
|
+
response = @app.call(env)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
data/lib/oauth-plugin.rb
CHANGED
@@ -1 +1,22 @@
|
|
1
|
-
|
1
|
+
require 'oauth'
|
2
|
+
require 'oauth/signature/hmac/sha1'
|
3
|
+
require 'oauth/request_proxy/rack_request'
|
4
|
+
require 'oauth/server'
|
5
|
+
require 'oauth/controllers/application_controller_methods'
|
6
|
+
if Rails.version =~ /^3\./
|
7
|
+
require 'oauth/request_proxy/rack_request'
|
8
|
+
else
|
9
|
+
require 'oauth/request_proxy/action_controller_request'
|
10
|
+
ActionController::Base.send :include, OAuth::Controllers::ApplicationControllerMethods
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
module OAuth
|
15
|
+
module Plugin
|
16
|
+
class OAuthRailtie < Rails::Railtie
|
17
|
+
initializer "oauth-plugin.configure_rails_initialization" do |app|
|
18
|
+
ActionController::Base.send :include, OAuth::Controllers::ApplicationControllerMethods
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/oauth-plugin.gemspec
CHANGED
@@ -1,199 +1,31 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "oauth-plugin/version"
|
5
4
|
|
6
5
|
Gem::Specification.new do |s|
|
7
6
|
s.name = %q{oauth-plugin}
|
8
|
-
s.version =
|
7
|
+
s.version = Oauth::Plugin::VERSION
|
9
8
|
|
10
9
|
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
10
|
s.authors = ["Pelle Braendgaard"]
|
12
|
-
s.date = %q{2010-12-
|
11
|
+
s.date = %q{2010-12-08}
|
13
12
|
s.description = %q{Rails plugin for implementing an OAuth Provider or Consumer}
|
14
13
|
s.email = %q{oauth-ruby@googlegroups.com}
|
15
14
|
s.extra_rdoc_files = [
|
16
15
|
"README.rdoc"
|
17
16
|
]
|
18
|
-
s.files
|
19
|
-
"
|
20
|
-
|
21
|
-
|
22
|
-
"Rakefile",
|
23
|
-
"VERSION",
|
24
|
-
"generators/oauth_consumer/USAGE",
|
25
|
-
"generators/oauth_consumer/oauth_consumer_generator.rb",
|
26
|
-
"generators/oauth_consumer/templates/consumer_token.rb",
|
27
|
-
"generators/oauth_consumer/templates/controller.rb",
|
28
|
-
"generators/oauth_consumer/templates/index.html.erb",
|
29
|
-
"generators/oauth_consumer/templates/index.html.haml",
|
30
|
-
"generators/oauth_consumer/templates/migration.rb",
|
31
|
-
"generators/oauth_consumer/templates/oauth_config.rb",
|
32
|
-
"generators/oauth_consumer/templates/show.html.erb",
|
33
|
-
"generators/oauth_consumer/templates/show.html.haml",
|
34
|
-
"generators/oauth_provider/USAGE",
|
35
|
-
"generators/oauth_provider/lib/insert_routes.rb",
|
36
|
-
"generators/oauth_provider/oauth_provider_generator.rb",
|
37
|
-
"generators/oauth_provider/templates/_form.html.erb",
|
38
|
-
"generators/oauth_provider/templates/_form.html.haml",
|
39
|
-
"generators/oauth_provider/templates/access_token.rb",
|
40
|
-
"generators/oauth_provider/templates/authorize.html.erb",
|
41
|
-
"generators/oauth_provider/templates/authorize.html.haml",
|
42
|
-
"generators/oauth_provider/templates/authorize_failure.html.erb",
|
43
|
-
"generators/oauth_provider/templates/authorize_failure.html.haml",
|
44
|
-
"generators/oauth_provider/templates/authorize_success.html.erb",
|
45
|
-
"generators/oauth_provider/templates/authorize_success.html.haml",
|
46
|
-
"generators/oauth_provider/templates/client_application.rb",
|
47
|
-
"generators/oauth_provider/templates/client_application_spec.rb",
|
48
|
-
"generators/oauth_provider/templates/client_application_test.rb",
|
49
|
-
"generators/oauth_provider/templates/client_applications.yml",
|
50
|
-
"generators/oauth_provider/templates/clients_controller.rb",
|
51
|
-
"generators/oauth_provider/templates/clients_controller_spec.rb",
|
52
|
-
"generators/oauth_provider/templates/clients_controller_test.rb",
|
53
|
-
"generators/oauth_provider/templates/controller.rb",
|
54
|
-
"generators/oauth_provider/templates/controller_spec.rb",
|
55
|
-
"generators/oauth_provider/templates/controller_spec_helper.rb",
|
56
|
-
"generators/oauth_provider/templates/controller_test.rb",
|
57
|
-
"generators/oauth_provider/templates/controller_test_helper.rb",
|
58
|
-
"generators/oauth_provider/templates/edit.html.erb",
|
59
|
-
"generators/oauth_provider/templates/edit.html.haml",
|
60
|
-
"generators/oauth_provider/templates/index.html.erb",
|
61
|
-
"generators/oauth_provider/templates/index.html.haml",
|
62
|
-
"generators/oauth_provider/templates/migration.rb",
|
63
|
-
"generators/oauth_provider/templates/new.html.erb",
|
64
|
-
"generators/oauth_provider/templates/new.html.haml",
|
65
|
-
"generators/oauth_provider/templates/oauth2_authorize.html.erb",
|
66
|
-
"generators/oauth_provider/templates/oauth2_authorize.html.haml",
|
67
|
-
"generators/oauth_provider/templates/oauth2_token.rb",
|
68
|
-
"generators/oauth_provider/templates/oauth2_token_spec.rb",
|
69
|
-
"generators/oauth_provider/templates/oauth2_verifier.rb",
|
70
|
-
"generators/oauth_provider/templates/oauth2_verifier_spec.rb",
|
71
|
-
"generators/oauth_provider/templates/oauth_nonce.rb",
|
72
|
-
"generators/oauth_provider/templates/oauth_nonce_spec.rb",
|
73
|
-
"generators/oauth_provider/templates/oauth_nonce_test.rb",
|
74
|
-
"generators/oauth_provider/templates/oauth_nonces.yml",
|
75
|
-
"generators/oauth_provider/templates/oauth_token.rb",
|
76
|
-
"generators/oauth_provider/templates/oauth_token_spec.rb",
|
77
|
-
"generators/oauth_provider/templates/oauth_token_test.rb",
|
78
|
-
"generators/oauth_provider/templates/oauth_tokens.yml",
|
79
|
-
"generators/oauth_provider/templates/request_token.rb",
|
80
|
-
"generators/oauth_provider/templates/show.html.erb",
|
81
|
-
"generators/oauth_provider/templates/show.html.haml",
|
82
|
-
"init.rb",
|
83
|
-
"install.rb",
|
84
|
-
"lib/generators/active_record/oauth_consumer_generator.rb",
|
85
|
-
"lib/generators/active_record/oauth_consumer_templates/consumer_token.rb",
|
86
|
-
"lib/generators/active_record/oauth_consumer_templates/migration.rb",
|
87
|
-
"lib/generators/active_record/oauth_provider_generator.rb",
|
88
|
-
"lib/generators/active_record/oauth_provider_templates/access_token.rb",
|
89
|
-
"lib/generators/active_record/oauth_provider_templates/client_application.rb",
|
90
|
-
"lib/generators/active_record/oauth_provider_templates/migration.rb",
|
91
|
-
"lib/generators/active_record/oauth_provider_templates/oauth2_token.rb",
|
92
|
-
"lib/generators/active_record/oauth_provider_templates/oauth2_verifier.rb",
|
93
|
-
"lib/generators/active_record/oauth_provider_templates/oauth_nonce.rb",
|
94
|
-
"lib/generators/active_record/oauth_provider_templates/oauth_token.rb",
|
95
|
-
"lib/generators/active_record/oauth_provider_templates/request_token.rb",
|
96
|
-
"lib/generators/erb/oauth_consumer_generator.rb",
|
97
|
-
"lib/generators/erb/oauth_consumer_templates/index.html.erb",
|
98
|
-
"lib/generators/erb/oauth_consumer_templates/show.html.erb",
|
99
|
-
"lib/generators/erb/oauth_provider_generator.rb",
|
100
|
-
"lib/generators/erb/oauth_provider_templates/_form.html.erb",
|
101
|
-
"lib/generators/erb/oauth_provider_templates/authorize.html.erb",
|
102
|
-
"lib/generators/erb/oauth_provider_templates/authorize_failure.html.erb",
|
103
|
-
"lib/generators/erb/oauth_provider_templates/authorize_success.html.erb",
|
104
|
-
"lib/generators/erb/oauth_provider_templates/edit.html.erb",
|
105
|
-
"lib/generators/erb/oauth_provider_templates/index.html.erb",
|
106
|
-
"lib/generators/erb/oauth_provider_templates/new.html.erb",
|
107
|
-
"lib/generators/erb/oauth_provider_templates/oauth2_authorize.html.erb",
|
108
|
-
"lib/generators/erb/oauth_provider_templates/show.html.erb",
|
109
|
-
"lib/generators/haml/oauth_consumer_generator.rb",
|
110
|
-
"lib/generators/haml/oauth_consumer_templates/index.html.haml",
|
111
|
-
"lib/generators/haml/oauth_consumer_templates/show.html.haml",
|
112
|
-
"lib/generators/haml/oauth_provider_generator.rb",
|
113
|
-
"lib/generators/haml/oauth_provider_templates/_form.html.haml",
|
114
|
-
"lib/generators/haml/oauth_provider_templates/authorize.html.haml",
|
115
|
-
"lib/generators/haml/oauth_provider_templates/authorize_failure.html.haml",
|
116
|
-
"lib/generators/haml/oauth_provider_templates/authorize_success.html.haml",
|
117
|
-
"lib/generators/haml/oauth_provider_templates/edit.html.haml",
|
118
|
-
"lib/generators/haml/oauth_provider_templates/index.html.haml",
|
119
|
-
"lib/generators/haml/oauth_provider_templates/new.html.haml",
|
120
|
-
"lib/generators/haml/oauth_provider_templates/oauth2_authorize.html.haml",
|
121
|
-
"lib/generators/haml/oauth_provider_templates/show.html.haml",
|
122
|
-
"lib/generators/mongoid/oauth_consumer_generator.rb",
|
123
|
-
"lib/generators/mongoid/oauth_consumer_templates/consumer_token.rb",
|
124
|
-
"lib/generators/mongoid/oauth_provider_generator.rb",
|
125
|
-
"lib/generators/mongoid/oauth_provider_templates/access_token.rb",
|
126
|
-
"lib/generators/mongoid/oauth_provider_templates/client_application.rb",
|
127
|
-
"lib/generators/mongoid/oauth_provider_templates/oauth2_token.rb",
|
128
|
-
"lib/generators/mongoid/oauth_provider_templates/oauth2_verifier.rb",
|
129
|
-
"lib/generators/mongoid/oauth_provider_templates/oauth_nonce.rb",
|
130
|
-
"lib/generators/mongoid/oauth_provider_templates/oauth_token.rb",
|
131
|
-
"lib/generators/mongoid/oauth_provider_templates/request_token.rb",
|
132
|
-
"lib/generators/oauth_consumer/USAGE",
|
133
|
-
"lib/generators/oauth_consumer/oauth_consumer_generator.rb",
|
134
|
-
"lib/generators/oauth_consumer/templates/controller.rb",
|
135
|
-
"lib/generators/oauth_consumer/templates/oauth_config.rb",
|
136
|
-
"lib/generators/oauth_inflections.rb",
|
137
|
-
"lib/generators/oauth_plugin.rb",
|
138
|
-
"lib/generators/oauth_provider/USAGE",
|
139
|
-
"lib/generators/oauth_provider/oauth_provider_generator.rb",
|
140
|
-
"lib/generators/oauth_provider/templates/clients_controller.rb",
|
141
|
-
"lib/generators/oauth_provider/templates/controller.rb",
|
142
|
-
"lib/generators/rspec/oauth_provider_generator.rb",
|
143
|
-
"lib/generators/rspec/templates/client_application_spec.rb",
|
144
|
-
"lib/generators/rspec/templates/client_applications.yml",
|
145
|
-
"lib/generators/rspec/templates/clients_controller_spec.rb",
|
146
|
-
"lib/generators/rspec/templates/controller_spec.rb",
|
147
|
-
"lib/generators/rspec/templates/controller_spec_helper.rb",
|
148
|
-
"lib/generators/rspec/templates/oauth2_token_spec.rb",
|
149
|
-
"lib/generators/rspec/templates/oauth2_verifier_spec.rb",
|
150
|
-
"lib/generators/rspec/templates/oauth_nonce_spec.rb",
|
151
|
-
"lib/generators/rspec/templates/oauth_nonces.yml",
|
152
|
-
"lib/generators/rspec/templates/oauth_token_spec.rb",
|
153
|
-
"lib/generators/rspec/templates/oauth_tokens.yml",
|
154
|
-
"lib/generators/test_unit/oauth_provider_generator.rb",
|
155
|
-
"lib/generators/test_unit/templates/client_application_test.rb",
|
156
|
-
"lib/generators/test_unit/templates/client_applications.yml",
|
157
|
-
"lib/generators/test_unit/templates/clients_controller_test.rb",
|
158
|
-
"lib/generators/test_unit/templates/controller_test.rb",
|
159
|
-
"lib/generators/test_unit/templates/controller_test_helper.rb",
|
160
|
-
"lib/generators/test_unit/templates/oauth_nonce_test.rb",
|
161
|
-
"lib/generators/test_unit/templates/oauth_nonces.yml",
|
162
|
-
"lib/generators/test_unit/templates/oauth_token_test.rb",
|
163
|
-
"lib/generators/test_unit/templates/oauth_tokens.yml",
|
164
|
-
"lib/oauth-plugin.rb",
|
165
|
-
"lib/oauth/controllers/application_controller_methods.rb",
|
166
|
-
"lib/oauth/controllers/consumer_controller.rb",
|
167
|
-
"lib/oauth/controllers/provider_controller.rb",
|
168
|
-
"lib/oauth/models/consumers/service_loader.rb",
|
169
|
-
"lib/oauth/models/consumers/services/agree2_token.rb",
|
170
|
-
"lib/oauth/models/consumers/services/fireeagle_token.rb",
|
171
|
-
"lib/oauth/models/consumers/services/google_token.rb",
|
172
|
-
"lib/oauth/models/consumers/services/twitter_token.rb",
|
173
|
-
"lib/oauth/models/consumers/simple_client.rb",
|
174
|
-
"lib/oauth/models/consumers/token.rb",
|
175
|
-
"oauth-plugin.gemspec",
|
176
|
-
"rails/init.rb",
|
177
|
-
"tasks/oauth_tasks.rake",
|
178
|
-
"uninstall.rb"
|
179
|
-
]
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
|
180
21
|
s.homepage = %q{http://github.com/pelle/oauth-plugin}
|
181
22
|
s.require_paths = ["lib"]
|
182
23
|
s.rubyforge_project = %q{oauth}
|
183
24
|
s.rubygems_version = %q{1.3.7}
|
184
25
|
s.summary = %q{Ruby on Rails Plugin for OAuth Provider and Consumer}
|
26
|
+
s.add_development_dependency "twitter"
|
27
|
+
s.add_development_dependency "opentransact"
|
185
28
|
|
186
|
-
|
187
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
188
|
-
s.specification_version = 3
|
189
|
-
|
190
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
191
|
-
s.add_runtime_dependency(%q<oauth>, [">= 0.4.4"])
|
192
|
-
else
|
193
|
-
s.add_dependency(%q<oauth>, [">= 0.4.4"])
|
194
|
-
end
|
195
|
-
else
|
196
|
-
s.add_dependency(%q<oauth>, [">= 0.4.4"])
|
197
|
-
end
|
29
|
+
s.add_dependency(%q<oauth>, [">= 0.4.4"])
|
198
30
|
end
|
199
31
|
|
data/rails/init.rb
CHANGED
@@ -1,11 +1 @@
|
|
1
|
-
require 'oauth'
|
2
|
-
require 'oauth/signature/hmac/sha1'
|
3
|
-
if Rails.version =~ /^3\./
|
4
|
-
require 'oauth/request_proxy/rack_request'
|
5
|
-
else
|
6
|
-
require 'oauth/request_proxy/action_controller_request'
|
7
|
-
end
|
8
|
-
require 'oauth/server'
|
9
|
-
require 'oauth/controllers/application_controller_methods'
|
10
|
-
|
11
|
-
ActionController::Base.send :include, OAuth::Controllers::ApplicationControllerMethods
|
1
|
+
require 'oauth-plugin'
|
metadata
CHANGED
@@ -6,8 +6,8 @@ version: !ruby/object:Gem::Version
|
|
6
6
|
- 0
|
7
7
|
- 4
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.4.0.
|
9
|
+
- pre3
|
10
|
+
version: 0.4.0.pre3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Pelle Braendgaard
|
@@ -15,13 +15,39 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-12-
|
18
|
+
date: 2010-12-08 00:00:00 -05:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
-
name:
|
22
|
+
name: twitter
|
23
23
|
prerelease: false
|
24
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
type: :development
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: opentransact
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
segments:
|
43
|
+
- 0
|
44
|
+
version: "0"
|
45
|
+
type: :development
|
46
|
+
version_requirements: *id002
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: oauth
|
49
|
+
prerelease: false
|
50
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
25
51
|
none: false
|
26
52
|
requirements:
|
27
53
|
- - ">="
|
@@ -32,7 +58,7 @@ dependencies:
|
|
32
58
|
- 4
|
33
59
|
version: 0.4.4
|
34
60
|
type: :runtime
|
35
|
-
version_requirements: *
|
61
|
+
version_requirements: *id003
|
36
62
|
description: Rails plugin for implementing an OAuth Provider or Consumer
|
37
63
|
email: oauth-ruby@googlegroups.com
|
38
64
|
executables: []
|
@@ -42,10 +68,13 @@ extensions: []
|
|
42
68
|
extra_rdoc_files:
|
43
69
|
- README.rdoc
|
44
70
|
files:
|
71
|
+
- .gitignore
|
45
72
|
- CHANGELOG
|
73
|
+
- Gemfile
|
46
74
|
- MIT-LICENSE
|
47
75
|
- README.rdoc
|
48
76
|
- Rakefile
|
77
|
+
- UPGRADE.rdoc
|
49
78
|
- VERSION
|
50
79
|
- generators/oauth_consumer/USAGE
|
51
80
|
- generators/oauth_consumer/oauth_consumer_generator.rb
|
@@ -188,6 +217,7 @@ files:
|
|
188
217
|
- lib/generators/test_unit/templates/oauth_token_test.rb
|
189
218
|
- lib/generators/test_unit/templates/oauth_tokens.yml
|
190
219
|
- lib/oauth-plugin.rb
|
220
|
+
- lib/oauth-plugin/version.rb
|
191
221
|
- lib/oauth/controllers/application_controller_methods.rb
|
192
222
|
- lib/oauth/controllers/consumer_controller.rb
|
193
223
|
- lib/oauth/controllers/provider_controller.rb
|
@@ -195,9 +225,12 @@ files:
|
|
195
225
|
- lib/oauth/models/consumers/services/agree2_token.rb
|
196
226
|
- lib/oauth/models/consumers/services/fireeagle_token.rb
|
197
227
|
- lib/oauth/models/consumers/services/google_token.rb
|
228
|
+
- lib/oauth/models/consumers/services/opentransact_token.rb
|
229
|
+
- lib/oauth/models/consumers/services/picomoney_token.rb
|
198
230
|
- lib/oauth/models/consumers/services/twitter_token.rb
|
199
231
|
- lib/oauth/models/consumers/simple_client.rb
|
200
232
|
- lib/oauth/models/consumers/token.rb
|
233
|
+
- lib/oauth/rack/oauth_filter.rb
|
201
234
|
- oauth-plugin.gemspec
|
202
235
|
- rails/init.rb
|
203
236
|
- tasks/oauth_tasks.rake
|