doorkeeper 0.4.2 → 0.5.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of doorkeeper might be problematic. Click here for more details.
- data/.gitignore +2 -0
- data/.travis.yml +5 -1
- data/CHANGELOG.md +29 -0
- data/Gemfile +12 -4
- data/README.md +76 -7
- data/Rakefile +1 -25
- data/app/assets/javascripts/doorkeeper/application.js +0 -7
- data/app/controllers/doorkeeper/application_controller.rb +1 -27
- data/app/controllers/doorkeeper/applications_controller.rb +14 -6
- data/app/controllers/doorkeeper/authorized_applications_controller.rb +1 -1
- data/app/controllers/doorkeeper/token_info_controller.rb +11 -0
- data/app/controllers/doorkeeper/tokens_controller.rb +11 -8
- data/app/validators/redirect_uri_validator.rb +12 -0
- data/app/views/doorkeeper/applications/_form.html.erb +3 -3
- data/app/views/doorkeeper/applications/edit.html.erb +1 -1
- data/app/views/doorkeeper/applications/index.html.erb +4 -4
- data/app/views/doorkeeper/applications/new.html.erb +1 -1
- data/app/views/doorkeeper/applications/show.html.erb +3 -3
- data/app/views/doorkeeper/authorizations/new.html.erb +2 -2
- data/app/views/doorkeeper/authorized_applications/index.html.erb +1 -1
- data/config/locales/en.yml +35 -0
- data/doorkeeper.gemspec +3 -3
- data/gemfiles/gemfile.rails-3.1.x +10 -0
- data/gemfiles/gemfile.rails-3.2.x +10 -0
- data/lib/doorkeeper.rb +10 -3
- data/lib/doorkeeper/config.rb +56 -38
- data/lib/doorkeeper/doorkeeper_for.rb +2 -0
- data/lib/doorkeeper/engine.rb +3 -32
- data/lib/doorkeeper/helpers/controller.rb +29 -0
- data/lib/doorkeeper/helpers/filter.rb +4 -18
- data/{app/models/doorkeeper → lib/doorkeeper/models}/access_grant.rb +7 -7
- data/{app/models/doorkeeper → lib/doorkeeper/models}/access_token.rb +27 -24
- data/lib/doorkeeper/models/accessible.rb +9 -0
- data/lib/doorkeeper/models/active_record/access_grant.rb +5 -0
- data/lib/doorkeeper/models/active_record/access_token.rb +15 -0
- data/lib/doorkeeper/models/active_record/application.rb +18 -0
- data/lib/doorkeeper/models/application.rb +38 -0
- data/lib/doorkeeper/models/expirable.rb +6 -4
- data/lib/doorkeeper/models/mongoid/access_grant.rb +22 -0
- data/lib/doorkeeper/models/mongoid/access_token.rb +35 -0
- data/lib/doorkeeper/models/mongoid/application.rb +22 -0
- data/lib/doorkeeper/models/mongoid/revocable.rb +15 -0
- data/lib/doorkeeper/models/mongoid/scopes.rb +15 -0
- data/lib/doorkeeper/models/ownership.rb +16 -0
- data/lib/doorkeeper/models/revocable.rb +1 -1
- data/lib/doorkeeper/models/scopes.rb +9 -5
- data/lib/doorkeeper/oauth/access_token_request.rb +2 -2
- data/lib/doorkeeper/oauth/authorization.rb +1 -0
- data/lib/doorkeeper/oauth/authorization/code.rb +5 -3
- data/lib/doorkeeper/oauth/client.rb +2 -2
- data/lib/doorkeeper/oauth/client_credentials_request.rb +4 -1
- data/lib/doorkeeper/oauth/helpers/unique_token.rb +2 -5
- data/lib/doorkeeper/oauth/password_access_token_request.rb +2 -5
- data/lib/doorkeeper/oauth/token.rb +36 -0
- data/lib/doorkeeper/rails/routes.rb +77 -0
- data/lib/doorkeeper/rails/routes/mapper.rb +28 -0
- data/lib/doorkeeper/rails/routes/mapping.rb +39 -0
- data/lib/doorkeeper/version.rb +1 -1
- data/lib/generators/doorkeeper/application_owner_generator.rb +15 -0
- data/lib/generators/doorkeeper/install_generator.rb +2 -9
- data/lib/generators/doorkeeper/migration_generator.rb +15 -0
- data/lib/generators/doorkeeper/templates/README +15 -1
- data/lib/generators/doorkeeper/templates/add_owner_to_application_migration.rb +7 -0
- data/lib/generators/doorkeeper/templates/initializer.rb +31 -15
- data/lib/generators/doorkeeper/templates/migration.rb +7 -4
- data/lib/generators/doorkeeper/views_generator.rb +1 -1
- data/script/run_all +3 -0
- data/spec/controllers/applications_controller_spec.rb +1 -1
- data/spec/controllers/authorizations_controller_spec.rb +4 -4
- data/spec/controllers/protected_resources_controller_spec.rb +7 -7
- data/spec/controllers/token_info_controller_spec.rb +54 -0
- data/spec/controllers/tokens_controller_spec.rb +3 -2
- data/spec/dummy/app/controllers/custom_authorizations_controller.rb +7 -0
- data/spec/dummy/app/models/user.rb +16 -5
- data/spec/dummy/config/application.rb +4 -7
- data/spec/dummy/config/boot.rb +3 -7
- data/spec/dummy/config/initializers/doorkeeper.rb +13 -0
- data/spec/dummy/config/mongoid.yml +7 -0
- data/spec/dummy/config/routes.rb +29 -1
- data/spec/dummy/db/migrate/20120312140401_add_password_to_users.rb +1 -1
- data/spec/dummy/db/migrate/20120524202412_create_doorkeeper_tables.rb +6 -4
- data/spec/dummy/db/schema.rb +5 -3
- data/spec/generators/application_owner_generator_spec.rb +23 -0
- data/spec/generators/install_generator_spec.rb +1 -6
- data/spec/generators/migration_generator_spec.rb +20 -0
- data/spec/lib/config_spec.rb +72 -4
- data/spec/lib/models/expirable_spec.rb +8 -11
- data/spec/lib/models/revocable_spec.rb +1 -1
- data/spec/lib/oauth/access_token_request_spec.rb +15 -9
- data/spec/lib/oauth/authorization_request_spec.rb +1 -0
- data/spec/lib/oauth/client_credentials_request_spec.rb +15 -9
- data/spec/lib/oauth/client_spec.rb +5 -8
- data/spec/lib/oauth/helpers/unique_token_spec.rb +2 -20
- data/spec/lib/oauth/password_access_token_request_spec.rb +16 -9
- data/spec/lib/oauth/token_spec.rb +83 -0
- data/spec/models/doorkeeper/access_token_spec.rb +41 -1
- data/spec/models/doorkeeper/application_spec.rb +53 -20
- data/spec/requests/flows/authorization_code_spec.rb +1 -1
- data/spec/requests/flows/client_credentials_spec.rb +2 -0
- data/spec/requests/flows/password_spec.rb +25 -0
- data/spec/requests/flows/refresh_token_spec.rb +5 -2
- data/spec/requests/protected_resources/private_api_spec.rb +10 -3
- data/spec/routing/custom_controller_routes_spec.rb +44 -0
- data/spec/routing/default_routes_spec.rb +32 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/spec_helper_integration.rb +18 -8
- data/spec/support/dependencies/factory_girl.rb +0 -3
- data/spec/support/orm/active_record.rb +11 -0
- data/spec/support/orm/mongoid.rb +26 -0
- data/spec/support/shared/controllers_shared_context.rb +2 -2
- data/spec/support/shared/models_shared_examples.rb +16 -0
- data/spec/validators/redirect_uri_validator_spec.rb +40 -0
- metadata +61 -37
- data/app/helpers/doorkeeper/application_helper.rb +0 -4
- data/app/models/doorkeeper/application.rb +0 -54
- data/config/routes.rb +0 -9
- data/lib/tasks/doorkeeper_tasks.rake +0 -4
- data/spec/support/dependencies/database_cleaner.rb +0 -16
@@ -8,7 +8,7 @@ shared_context "valid token", :token => :valid do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
before :each do
|
11
|
-
Doorkeeper::AccessToken.stub(:
|
11
|
+
Doorkeeper::AccessToken.stub(:authenticate).with(token_string).and_return(token)
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
@@ -22,7 +22,7 @@ shared_context "invalid token", :token => :invalid do
|
|
22
22
|
end
|
23
23
|
|
24
24
|
before :each do
|
25
|
-
Doorkeeper::AccessToken.stub(:
|
25
|
+
Doorkeeper::AccessToken.stub(:authenticate).with(token_string).and_return(token)
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
@@ -40,5 +40,21 @@ shared_examples "an unique token" do
|
|
40
40
|
it "is generated before validation" do
|
41
41
|
expect { subject.valid? }.to change { subject.token }.from(nil)
|
42
42
|
end
|
43
|
+
|
44
|
+
it "is not valid if token exists" do
|
45
|
+
token1 = FactoryGirl.create factory_name
|
46
|
+
token2 = FactoryGirl.create factory_name
|
47
|
+
token2.token = token1.token
|
48
|
+
token2.should_not be_valid
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'expects database to throw an error when tokens are the same' do
|
52
|
+
token1 = FactoryGirl.create factory_name
|
53
|
+
token2 = FactoryGirl.create factory_name
|
54
|
+
token2.token = token1.token
|
55
|
+
expect {
|
56
|
+
token2.save!(:validate => false)
|
57
|
+
}.to raise_error
|
58
|
+
end
|
43
59
|
end
|
44
60
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'active_model'
|
3
|
+
require 'validators/redirect_uri_validator'
|
4
|
+
|
5
|
+
require 'spec_helper_integration'
|
6
|
+
|
7
|
+
describe RedirectUriValidator do
|
8
|
+
subject do
|
9
|
+
FactoryGirl.create(:application)
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'is valid when the uri is a uri' do
|
13
|
+
subject.redirect_uri = "http://example.com/callback"
|
14
|
+
subject.should be_valid
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'is invalid when the uri is not a uri' do
|
18
|
+
subject.redirect_uri = ']'
|
19
|
+
subject.should_not be_valid
|
20
|
+
subject.errors[:redirect_uri].first.should == "must be a valid URI."
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'is invalid when the uri is relative' do
|
24
|
+
subject.redirect_uri = "/abcd"
|
25
|
+
subject.should_not be_valid
|
26
|
+
subject.errors[:redirect_uri].first.should == "must be an absolute URI."
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'is invalid when the uri has a fragment' do
|
30
|
+
subject.redirect_uri = "http://example.com/abcd#xyz"
|
31
|
+
subject.should_not be_valid
|
32
|
+
subject.errors[:redirect_uri].first.should == "cannot contain a fragment."
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'is invalid when the uri has a query parameter' do
|
36
|
+
subject.redirect_uri = "http://example.com/abcd?xyz=123"
|
37
|
+
subject.should_not be_valid
|
38
|
+
subject.errors[:redirect_uri].first.should == "cannot contain a query parameter."
|
39
|
+
end
|
40
|
+
end
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: doorkeeper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.5.0.rc1
|
5
|
+
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Felipe Elias Philipp
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-10-13 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: railties
|
17
|
-
requirement: &
|
17
|
+
requirement: &70350798368240 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '3.1'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *70350798368240
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: sqlite3
|
28
|
-
requirement: &
|
28
|
+
requirement: &70350798434620 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
@@ -33,21 +33,21 @@ dependencies:
|
|
33
33
|
version: 1.3.5
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *70350798434620
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: rspec-rails
|
39
|
-
requirement: &
|
39
|
+
requirement: &70350798433760 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ~>
|
43
43
|
- !ruby/object:Gem::Version
|
44
|
-
version: 2.
|
44
|
+
version: 2.11.0
|
45
45
|
type: :development
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *70350798433760
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: capybara
|
50
|
-
requirement: &
|
50
|
+
requirement: &70350798433080 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ~>
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: 1.1.2
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *70350798433080
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: generator_spec
|
61
|
-
requirement: &
|
61
|
+
requirement: &70350798432160 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ~>
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: 0.8.5
|
67
67
|
type: :development
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *70350798432160
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: factory_girl
|
72
|
-
requirement: &
|
72
|
+
requirement: &70350798431660 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ~>
|
@@ -77,32 +77,32 @@ dependencies:
|
|
77
77
|
version: 2.6.4
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *70350798431660
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: timecop
|
83
|
-
requirement: &
|
83
|
+
requirement: &70350798431160 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
86
86
|
- - ~>
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: 0.3
|
88
|
+
version: 0.4.3
|
89
89
|
type: :development
|
90
90
|
prerelease: false
|
91
|
-
version_requirements: *
|
91
|
+
version_requirements: *70350798431160
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: database_cleaner
|
94
|
-
requirement: &
|
94
|
+
requirement: &70350798430340 !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|
97
97
|
- - ~>
|
98
98
|
- !ruby/object:Gem::Version
|
99
|
-
version: 0.
|
99
|
+
version: '0.8'
|
100
100
|
type: :development
|
101
101
|
prerelease: false
|
102
|
-
version_requirements: *
|
102
|
+
version_requirements: *70350798430340
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: bcrypt-ruby
|
105
|
-
requirement: &
|
105
|
+
requirement: &70350798429340 !ruby/object:Gem::Requirement
|
106
106
|
none: false
|
107
107
|
requirements:
|
108
108
|
- - ~>
|
@@ -110,7 +110,7 @@ dependencies:
|
|
110
110
|
version: 3.0.1
|
111
111
|
type: :development
|
112
112
|
prerelease: false
|
113
|
-
version_requirements: *
|
113
|
+
version_requirements: *70350798429340
|
114
114
|
description: Doorkeeper is an OAuth 2 provider for Rails.
|
115
115
|
email:
|
116
116
|
- felipe@applicake.com
|
@@ -134,11 +134,9 @@ files:
|
|
134
134
|
- app/controllers/doorkeeper/applications_controller.rb
|
135
135
|
- app/controllers/doorkeeper/authorizations_controller.rb
|
136
136
|
- app/controllers/doorkeeper/authorized_applications_controller.rb
|
137
|
+
- app/controllers/doorkeeper/token_info_controller.rb
|
137
138
|
- app/controllers/doorkeeper/tokens_controller.rb
|
138
|
-
- app/
|
139
|
-
- app/models/doorkeeper/access_grant.rb
|
140
|
-
- app/models/doorkeeper/access_token.rb
|
141
|
-
- app/models/doorkeeper/application.rb
|
139
|
+
- app/validators/redirect_uri_validator.rb
|
142
140
|
- app/views/doorkeeper/applications/_form.html.erb
|
143
141
|
- app/views/doorkeeper/applications/edit.html.erb
|
144
142
|
- app/views/doorkeeper/applications/index.html.erb
|
@@ -150,7 +148,6 @@ files:
|
|
150
148
|
- app/views/layouts/doorkeeper/application.html.erb
|
151
149
|
- config/initializers/form_errors.rb
|
152
150
|
- config/locales/en.yml
|
153
|
-
- config/routes.rb
|
154
151
|
- doorkeeper.gemspec
|
155
152
|
- gemfiles/gemfile.rails-3.1.x
|
156
153
|
- gemfiles/gemfile.rails-3.2.x
|
@@ -158,8 +155,22 @@ files:
|
|
158
155
|
- lib/doorkeeper/config.rb
|
159
156
|
- lib/doorkeeper/doorkeeper_for.rb
|
160
157
|
- lib/doorkeeper/engine.rb
|
158
|
+
- lib/doorkeeper/helpers/controller.rb
|
161
159
|
- lib/doorkeeper/helpers/filter.rb
|
160
|
+
- lib/doorkeeper/models/access_grant.rb
|
161
|
+
- lib/doorkeeper/models/access_token.rb
|
162
|
+
- lib/doorkeeper/models/accessible.rb
|
163
|
+
- lib/doorkeeper/models/active_record/access_grant.rb
|
164
|
+
- lib/doorkeeper/models/active_record/access_token.rb
|
165
|
+
- lib/doorkeeper/models/active_record/application.rb
|
166
|
+
- lib/doorkeeper/models/application.rb
|
162
167
|
- lib/doorkeeper/models/expirable.rb
|
168
|
+
- lib/doorkeeper/models/mongoid/access_grant.rb
|
169
|
+
- lib/doorkeeper/models/mongoid/access_token.rb
|
170
|
+
- lib/doorkeeper/models/mongoid/application.rb
|
171
|
+
- lib/doorkeeper/models/mongoid/revocable.rb
|
172
|
+
- lib/doorkeeper/models/mongoid/scopes.rb
|
173
|
+
- lib/doorkeeper/models/ownership.rb
|
163
174
|
- lib/doorkeeper/models/revocable.rb
|
164
175
|
- lib/doorkeeper/models/scopes.rb
|
165
176
|
- lib/doorkeeper/oauth/access_token_request.rb
|
@@ -183,24 +194,32 @@ files:
|
|
183
194
|
- lib/doorkeeper/oauth/helpers/uri_checker.rb
|
184
195
|
- lib/doorkeeper/oauth/password_access_token_request.rb
|
185
196
|
- lib/doorkeeper/oauth/scopes.rb
|
197
|
+
- lib/doorkeeper/oauth/token.rb
|
198
|
+
- lib/doorkeeper/rails/routes.rb
|
199
|
+
- lib/doorkeeper/rails/routes/mapper.rb
|
200
|
+
- lib/doorkeeper/rails/routes/mapping.rb
|
186
201
|
- lib/doorkeeper/validations.rb
|
187
202
|
- lib/doorkeeper/version.rb
|
203
|
+
- lib/generators/doorkeeper/application_owner_generator.rb
|
188
204
|
- lib/generators/doorkeeper/install_generator.rb
|
205
|
+
- lib/generators/doorkeeper/migration_generator.rb
|
189
206
|
- lib/generators/doorkeeper/templates/README
|
207
|
+
- lib/generators/doorkeeper/templates/add_owner_to_application_migration.rb
|
190
208
|
- lib/generators/doorkeeper/templates/initializer.rb
|
191
209
|
- lib/generators/doorkeeper/templates/migration.rb
|
192
210
|
- lib/generators/doorkeeper/views_generator.rb
|
193
|
-
- lib/tasks/doorkeeper_tasks.rake
|
194
211
|
- script/rails
|
195
212
|
- script/run_all
|
196
213
|
- spec/controllers/applications_controller_spec.rb
|
197
214
|
- spec/controllers/authorizations_controller_spec.rb
|
198
215
|
- spec/controllers/protected_resources_controller_spec.rb
|
216
|
+
- spec/controllers/token_info_controller_spec.rb
|
199
217
|
- spec/controllers/tokens_controller_spec.rb
|
200
218
|
- spec/dummy/Rakefile
|
201
219
|
- spec/dummy/app/assets/javascripts/application.js
|
202
220
|
- spec/dummy/app/assets/stylesheets/application.css
|
203
221
|
- spec/dummy/app/controllers/application_controller.rb
|
222
|
+
- spec/dummy/app/controllers/custom_authorizations_controller.rb
|
204
223
|
- spec/dummy/app/controllers/full_protected_resources_controller.rb
|
205
224
|
- spec/dummy/app/controllers/home_controller.rb
|
206
225
|
- spec/dummy/app/controllers/metal_controller.rb
|
@@ -223,6 +242,7 @@ files:
|
|
223
242
|
- spec/dummy/config/initializers/session_store.rb
|
224
243
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
225
244
|
- spec/dummy/config/locales/doorkeeper.en.yml
|
245
|
+
- spec/dummy/config/mongoid.yml
|
226
246
|
- spec/dummy/config/routes.rb
|
227
247
|
- spec/dummy/db/migrate/20111122132257_create_users.rb
|
228
248
|
- spec/dummy/db/migrate/20120312140401_add_password_to_users.rb
|
@@ -236,7 +256,9 @@ files:
|
|
236
256
|
- spec/factories/access_grant.rb
|
237
257
|
- spec/factories/access_token.rb
|
238
258
|
- spec/factories/application.rb
|
259
|
+
- spec/generators/application_owner_generator_spec.rb
|
239
260
|
- spec/generators/install_generator_spec.rb
|
261
|
+
- spec/generators/migration_generator_spec.rb
|
240
262
|
- spec/generators/templates/routes.rb
|
241
263
|
- spec/generators/views_generator_spec.rb
|
242
264
|
- spec/lib/config_spec.rb
|
@@ -262,6 +284,7 @@ files:
|
|
262
284
|
- spec/lib/oauth/helpers/uri_checker_spec.rb
|
263
285
|
- spec/lib/oauth/password_access_token_request_spec.rb
|
264
286
|
- spec/lib/oauth/scopes_spec.rb
|
287
|
+
- spec/lib/oauth/token_spec.rb
|
265
288
|
- spec/models/doorkeeper/access_grant_spec.rb
|
266
289
|
- spec/models/doorkeeper/access_token_spec.rb
|
267
290
|
- spec/models/doorkeeper/application_spec.rb
|
@@ -279,9 +302,10 @@ files:
|
|
279
302
|
- spec/requests/flows/skip_authorization_spec.rb
|
280
303
|
- spec/requests/protected_resources/metal_spec.rb
|
281
304
|
- spec/requests/protected_resources/private_api_spec.rb
|
305
|
+
- spec/routing/custom_controller_routes_spec.rb
|
306
|
+
- spec/routing/default_routes_spec.rb
|
282
307
|
- spec/spec_helper.rb
|
283
308
|
- spec/spec_helper_integration.rb
|
284
|
-
- spec/support/dependencies/database_cleaner.rb
|
285
309
|
- spec/support/dependencies/factory_girl.rb
|
286
310
|
- spec/support/helpers/access_token_request_helper.rb
|
287
311
|
- spec/support/helpers/authorization_request_helper.rb
|
@@ -289,8 +313,11 @@ files:
|
|
289
313
|
- spec/support/helpers/model_helper.rb
|
290
314
|
- spec/support/helpers/request_spec_helper.rb
|
291
315
|
- spec/support/helpers/url_helper.rb
|
316
|
+
- spec/support/orm/active_record.rb
|
317
|
+
- spec/support/orm/mongoid.rb
|
292
318
|
- spec/support/shared/controllers_shared_context.rb
|
293
319
|
- spec/support/shared/models_shared_examples.rb
|
320
|
+
- spec/validators/redirect_uri_validator_spec.rb
|
294
321
|
homepage: https://github.com/applicake/doorkeeper
|
295
322
|
licenses: []
|
296
323
|
post_install_message:
|
@@ -305,16 +332,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
305
332
|
version: '0'
|
306
333
|
segments:
|
307
334
|
- 0
|
308
|
-
hash:
|
335
|
+
hash: 4023575176994641272
|
309
336
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
310
337
|
none: false
|
311
338
|
requirements:
|
312
|
-
- - ! '
|
339
|
+
- - ! '>'
|
313
340
|
- !ruby/object:Gem::Version
|
314
|
-
version:
|
315
|
-
segments:
|
316
|
-
- 0
|
317
|
-
hash: 1821327864536476120
|
341
|
+
version: 1.3.1
|
318
342
|
requirements: []
|
319
343
|
rubyforge_project:
|
320
344
|
rubygems_version: 1.8.12
|
@@ -1,54 +0,0 @@
|
|
1
|
-
module Doorkeeper
|
2
|
-
class Application < ActiveRecord::Base
|
3
|
-
include Doorkeeper::OAuth::Helpers
|
4
|
-
|
5
|
-
self.table_name = :oauth_applications
|
6
|
-
|
7
|
-
has_many :access_grants, :dependent => :destroy
|
8
|
-
has_many :access_tokens, :dependent => :destroy
|
9
|
-
has_many :authorized_tokens, :class_name => "AccessToken", :conditions => { :revoked_at => nil }
|
10
|
-
has_many :authorized_applications, :through => :authorized_tokens, :source => :application
|
11
|
-
|
12
|
-
validates :name, :secret, :redirect_uri, :presence => true
|
13
|
-
validates :uid, :presence => true, :uniqueness => true
|
14
|
-
validate :validate_redirect_uri
|
15
|
-
|
16
|
-
before_validation :generate_uid, :generate_secret, :on => :create
|
17
|
-
|
18
|
-
attr_accessible :name, :redirect_uri
|
19
|
-
|
20
|
-
def self.authenticate(uid, secret)
|
21
|
-
find_by_uid_and_secret(uid, secret)
|
22
|
-
end
|
23
|
-
|
24
|
-
def self.column_names_with_table
|
25
|
-
self.column_names.map { |c| "oauth_applications.#{c}" }
|
26
|
-
end
|
27
|
-
|
28
|
-
def self.authorized_for(resource_owner)
|
29
|
-
joins(:authorized_applications).
|
30
|
-
where(:oauth_access_tokens => { :resource_owner_id => resource_owner.id }).
|
31
|
-
group(column_names_with_table.join(','))
|
32
|
-
end
|
33
|
-
|
34
|
-
def validate_redirect_uri
|
35
|
-
return unless redirect_uri
|
36
|
-
uri = URI.parse(redirect_uri)
|
37
|
-
errors.add(:redirect_uri, "cannot contain a fragment.") unless uri.fragment.nil?
|
38
|
-
errors.add(:redirect_uri, "must be an absolute URL.") if uri.scheme.nil? || uri.host.nil?
|
39
|
-
errors.add(:redirect_uri, "cannot contain a query parameter.") unless uri.query.nil?
|
40
|
-
rescue URI::InvalidURIError => e
|
41
|
-
errors.add(:redirect_uri, "must be a valid URI.")
|
42
|
-
end
|
43
|
-
|
44
|
-
private
|
45
|
-
|
46
|
-
def generate_uid
|
47
|
-
self.uid = UniqueToken.generate_for :uid, self.class
|
48
|
-
end
|
49
|
-
|
50
|
-
def generate_secret
|
51
|
-
self.secret = UniqueToken.generate_for :secret, self.class
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
data/config/routes.rb
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
Doorkeeper::Engine.routes.draw do
|
2
|
-
get 'authorize', :to => "authorizations#new", :as => :authorization
|
3
|
-
post 'authorize', :to => "authorizations#create", :as => :authorization
|
4
|
-
delete 'authorize', :to => "authorizations#destroy", :as => :authorization
|
5
|
-
post 'token', :to => "tokens#create", :as => :token
|
6
|
-
|
7
|
-
resources :applications
|
8
|
-
resources :authorized_applications, :only => [:index, :destroy]
|
9
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
require "database_cleaner"
|
2
|
-
|
3
|
-
RSpec.configure do |config|
|
4
|
-
config.before(:suite) do
|
5
|
-
DatabaseCleaner.strategy = :transaction
|
6
|
-
DatabaseCleaner.clean_with(:truncation)
|
7
|
-
end
|
8
|
-
|
9
|
-
config.before(:each) do
|
10
|
-
DatabaseCleaner.start
|
11
|
-
end
|
12
|
-
|
13
|
-
config.after(:each) do
|
14
|
-
DatabaseCleaner.clean
|
15
|
-
end
|
16
|
-
end
|