wine_bouncer 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +6 -0
- data/CHANGELOG.md +2 -0
- data/README.md +43 -0
- data/lib/wine_bouncer/auth_strategies/protected.rb +35 -0
- data/lib/wine_bouncer/version.rb +1 -1
- data/spec/dummy/app/api/protected_api.rb +39 -0
- data/spec/dummy/config/routes.rb +1 -0
- data/spec/intergration/oauth2_protected_strategy_spec.rb +97 -0
- data/wine_bouncer.gemspec +1 -1
- metadata +37 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c16d471f3bf4c00fc8aabb999f0225071ba3e199
|
4
|
+
data.tar.gz: 2e6c872a709af181da9c42d19394da0e01a0db29
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aeee07c8f60e126290e75e311abc94ed2086640dd39a0f2e128775e83b6168d31d5e064e0f826f992409071cb5bb2f60624509d1ba14fb7f04b68e8947d041f8
|
7
|
+
data.tar.gz: 47c5faa48f155eac4747f3f26caee1ef877157913f897e98821032311f14231b0d7634ceaa23a47da2402eaec02d9c8cae3b6ee82ae5f2437e9c2fd7ec656899
|
data/.travis.yml
CHANGED
@@ -6,6 +6,7 @@ rvm:
|
|
6
6
|
- 1.9.3
|
7
7
|
- 2.0
|
8
8
|
- 2.1
|
9
|
+
- 2.2
|
9
10
|
env:
|
10
11
|
- rails=3.2.18 grape=0.8.0
|
11
12
|
- rails=4.1.1 grape=0.8.0
|
@@ -13,6 +14,11 @@ env:
|
|
13
14
|
- rails=3.2.18 grape=0.9.0
|
14
15
|
- rails=4.1.1 grape=0.9.0 doorkeeper=1.4.1
|
15
16
|
- rails=4.1.1 grape=0.9.0
|
17
|
+
matrix:
|
18
|
+
allow_failures:
|
19
|
+
- env: rails=3.2.18 grape=0.8.0
|
20
|
+
- env: rails=3.2.18 grape=0.9.0 doorkeeper=1.4.1
|
21
|
+
- env: rails=3.2.18 grape=0.9.0
|
16
22
|
addons:
|
17
23
|
code_climate:
|
18
24
|
repo_token: ab1b6ce5f973da033f80ae2e99fadbb32b2f9c37892703956d8ef954c8e8134e
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
Changelog
|
2
2
|
=========
|
3
|
+
## 0.2.2
|
4
|
+
*[#17](https://github.com/antek-drzewiecki/wine_bouncer/pull/17): Added a new protected strategy. Thanks @whatasunnyday .
|
3
5
|
|
4
6
|
## 0.2.1
|
5
7
|
*[#12](https://github.com/antek-drzewiecki/wine_bouncer/pull/12): Added a rails generator to generate the WineBouncer configuration file. Thanks @whatasunnyday.
|
data/README.md
CHANGED
@@ -16,6 +16,7 @@ Table of Contents
|
|
16
16
|
* [Authentication strategies](#authentication-strategies)
|
17
17
|
* [Default](#default)
|
18
18
|
* [Swagger](#swagger)
|
19
|
+
* [Protected](#protected)
|
19
20
|
* [Token information](#token-information)
|
20
21
|
* [Exceptions and Exception handling](#exceptions-and-exception-handling)
|
21
22
|
* [Development](#development)
|
@@ -196,6 +197,48 @@ It defaults assumes when no description is given that no authorization should be
|
|
196
197
|
When the authentication syntax is mentioned in the method description, the method will be protected.
|
197
198
|
You can use the default scopes of Doorkeeper by just adding `authorizations: { oauth2: [] }` or state your own scopes with `authorizations: { oauth2: [ { scope: 'scope1' }, { scope: 'scope2' }, ... ] }`.
|
198
199
|
|
200
|
+
#### Protected
|
201
|
+
|
202
|
+
The protected strategy is very similiar to the default strategy except any public end point must explicitly set. To make an end point public, use `auth: false`.
|
203
|
+
If the authorization is not set, the end point is assumed to be protected and Doorkeeper's default scopes are used.
|
204
|
+
|
205
|
+
Example:
|
206
|
+
|
207
|
+
``` ruby
|
208
|
+
class MyAwesomeAPI < Grape::API
|
209
|
+
desc 'protected method with required public scope',
|
210
|
+
auth: { scopes: ['public'] }
|
211
|
+
get '/protected' do
|
212
|
+
{ hello: 'world' }
|
213
|
+
end
|
214
|
+
|
215
|
+
desc 'Unprotected method'
|
216
|
+
get '/unprotected', auth: false do
|
217
|
+
{ hello: 'unprotected world' }
|
218
|
+
end
|
219
|
+
|
220
|
+
desc 'This method needs the public or private scope.',
|
221
|
+
auth: [:public, :private]
|
222
|
+
# Doorkeeper's default scopes are [:public, :private] so auth can be omitted. See next example.
|
223
|
+
get '/method' do
|
224
|
+
{ hello: 'public or private user.' }
|
225
|
+
end
|
226
|
+
|
227
|
+
desc 'This method uses Doorkeepers default scopes.'
|
228
|
+
get '/protected_with_default_scope' do
|
229
|
+
{ hello: 'protected unscoped world' }
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
class Api < Grape::API
|
234
|
+
default_format :json
|
235
|
+
format :json
|
236
|
+
use ::WineBouncer::OAuth2
|
237
|
+
mount MyAwesomeAPI
|
238
|
+
add_swagger_documentation
|
239
|
+
end
|
240
|
+
```
|
241
|
+
|
199
242
|
### Token information
|
200
243
|
|
201
244
|
WineBouncer comes with free extras! Methods for `resource_owner` and `doorkeeper_access_token` get included in your endpoints. You can use them to get the current resource owner, and the access_token object of doorkeeper.
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module WineBouncer
|
2
|
+
module AuthStrategies
|
3
|
+
class Protected
|
4
|
+
|
5
|
+
def endpoint_protected?(context)
|
6
|
+
has_authorizations?(context)
|
7
|
+
end
|
8
|
+
|
9
|
+
def has_auth_scopes?(context)
|
10
|
+
endpoint_authorizations(context) &&
|
11
|
+
endpoint_authorizations(context).has_key?(:scopes) &&
|
12
|
+
endpoint_authorizations(context)[:scopes].any?
|
13
|
+
end
|
14
|
+
|
15
|
+
def auth_scopes(context)
|
16
|
+
endpoint_authorizations(context)[:scopes].map(&:to_sym)
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def nil_authorizations?(context)
|
22
|
+
endpoint_authorizations(context).nil?
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
def has_authorizations?(context)
|
27
|
+
nil_authorizations?(context) || endpoint_authorizations(context)
|
28
|
+
end
|
29
|
+
|
30
|
+
def endpoint_authorizations(context)
|
31
|
+
context[:auth]
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/wine_bouncer/version.rb
CHANGED
@@ -0,0 +1,39 @@
|
|
1
|
+
module Api
|
2
|
+
|
3
|
+
###
|
4
|
+
# Api under test, default doorkeeper scope is 'account'
|
5
|
+
##
|
6
|
+
class MountedProtectedApiUnderTest < Grape::API
|
7
|
+
desc 'Protected method with public', auth: { scopes: ['public'] }
|
8
|
+
get '/protected' do
|
9
|
+
{ hello: 'world' }
|
10
|
+
end
|
11
|
+
|
12
|
+
desc 'Protected method with private', auth: { scopes: ['private'] }
|
13
|
+
get '/protected_with_private_scope' do
|
14
|
+
{ hello: 'scoped world' }
|
15
|
+
end
|
16
|
+
|
17
|
+
desc 'Unprotected method'
|
18
|
+
get '/unprotected', auth: false do
|
19
|
+
{ hello: 'unprotected world' }
|
20
|
+
end
|
21
|
+
|
22
|
+
desc 'Protected method with public that returns the user name', auth: { scopes: ['public'] }
|
23
|
+
get '/protected_user' do
|
24
|
+
{ hello: resource_owner.name }
|
25
|
+
end
|
26
|
+
|
27
|
+
desc 'This method uses Doorkeepers default scopes'
|
28
|
+
get '/protected_without_scope' do
|
29
|
+
{ hello: 'protected unscoped world' }
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
class ProtectedApiUnderTest < Grape::API
|
34
|
+
default_format :json
|
35
|
+
format :json
|
36
|
+
use ::WineBouncer::OAuth2
|
37
|
+
mount MountedProtectedApiUnderTest
|
38
|
+
end
|
39
|
+
end
|
data/spec/dummy/config/routes.rb
CHANGED
@@ -0,0 +1,97 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
describe Api::MountedProtectedApiUnderTest, type: :api do
|
5
|
+
|
6
|
+
let(:user) { FactoryGirl.create :user }
|
7
|
+
let(:token) { FactoryGirl.create :clientless_access_token, resource_owner_id: user.id, scopes: "public" }
|
8
|
+
let(:unscoped_token) { FactoryGirl.create :clientless_access_token, resource_owner_id: user.id, scopes: "" }
|
9
|
+
|
10
|
+
before (:example) do
|
11
|
+
WineBouncer.configure do |c|
|
12
|
+
c.auth_strategy = :protected
|
13
|
+
|
14
|
+
c.define_resource_owner do
|
15
|
+
User.find(doorkeeper_access_token.resource_owner_id) if doorkeeper_access_token
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'tokens and scopes' do
|
21
|
+
it 'gives access when the token and scope are correct' do
|
22
|
+
get '/protected_api/protected', nil, 'HTTP_AUTHORIZATION' => "Bearer #{token.token}"
|
23
|
+
|
24
|
+
expect(last_response.status).to eq(200)
|
25
|
+
json = JSON.parse(last_response.body)
|
26
|
+
expect(json).to have_key('hello')
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'raises an authentication error when the token is invalid' do
|
30
|
+
expect { get '/protected_api/protected', nil, 'HTTP_AUTHORIZATION' => "Bearer #{token.token}-invalid" }.to raise_exception(WineBouncer::Errors::OAuthUnauthorizedError)
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'raises an oauth authentication error when no token is given' do
|
34
|
+
expect { get '/protected_api/protected' }.to raise_exception(WineBouncer::Errors::OAuthUnauthorizedError)
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'raises an auth forbidden authentication error when the user scope is not correct' do
|
38
|
+
expect { get '/protected_api/protected_with_private_scope', nil, 'HTTP_AUTHORIZATION' => "Bearer #{token.token}" }.to raise_exception(WineBouncer::Errors::OAuthForbiddenError)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context 'unprotected endpoint' do
|
43
|
+
it 'allows to call an unprotected endpoint without token' do
|
44
|
+
get '/protected_api/unprotected'
|
45
|
+
|
46
|
+
expect(last_response.status).to eq(200)
|
47
|
+
json = JSON.parse(last_response.body)
|
48
|
+
|
49
|
+
expect(json).to have_key('hello')
|
50
|
+
expect(json['hello']).to eq('unprotected world')
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'allows to call an unprotected endpoint with token' do
|
54
|
+
get '/protected_api/unprotected', nil, 'HTTP_AUTHORIZATION' => "Bearer #{token.token}"
|
55
|
+
|
56
|
+
expect(last_response.status).to eq(200)
|
57
|
+
json = JSON.parse(last_response.body)
|
58
|
+
expect(json).to have_key('hello')
|
59
|
+
expect(json['hello']).to eq('unprotected world')
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
context 'protected_without_scopes' do
|
64
|
+
it 'does not allow an unauthenticated user to call a protected endpoint' do
|
65
|
+
expect { get '/protected_api/protected_without_scope' }.to raise_exception(WineBouncer::Errors::OAuthUnauthorizedError)
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'allows to call an protected endpoint without scopes' do
|
69
|
+
get '/protected_api/protected_without_scope', nil, 'HTTP_AUTHORIZATION' => "Bearer #{token.token}"
|
70
|
+
|
71
|
+
expect(last_response.status).to eq(200)
|
72
|
+
json = JSON.parse(last_response.body)
|
73
|
+
expect(json).to have_key('hello')
|
74
|
+
expect(json['hello']).to eq('protected unscoped world')
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'raises an error when an protected endpoint without scopes is called without token ' do
|
78
|
+
expect { get '/protected_api/protected_without_scope' }.to raise_exception(WineBouncer::Errors::OAuthUnauthorizedError)
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'raises an error because the user does not have the default scope' do
|
82
|
+
expect { get '/protected_api/protected_without_scope', nil, 'HTTP_AUTHORIZATION' => "Bearer #{unscoped_token.token}" }.to raise_exception(WineBouncer::Errors::OAuthForbiddenError)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
context 'resource_owner' do
|
87
|
+
it 'is available in the endpoint' do
|
88
|
+
get '/protected_api/protected_user', nil, 'HTTP_AUTHORIZATION' => "Bearer #{token.token}"
|
89
|
+
|
90
|
+
expect(last_response.status).to eq(200)
|
91
|
+
json = JSON.parse(last_response.body)
|
92
|
+
|
93
|
+
expect(json).to have_key('hello')
|
94
|
+
expect(json['hello']).to eq(user.name)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
data/wine_bouncer.gemspec
CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_development_dependency "railties"
|
24
24
|
spec.add_development_dependency "bundler", "~> 1.7"
|
25
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
26
|
-
spec.add_development_dependency "rspec-rails",
|
26
|
+
spec.add_development_dependency "rspec-rails", '~> 3.2.0'
|
27
27
|
spec.add_development_dependency 'factory_girl', '~> 4.4.0'
|
28
28
|
spec.add_development_dependency "generator_spec", "~> 0.9.0"
|
29
29
|
spec.add_development_dependency "sqlite3"
|
metadata
CHANGED
@@ -1,159 +1,159 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wine_bouncer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Antek Drzewiecki
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: grape
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0.8'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0.8'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: doorkeeper
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.4'
|
34
|
-
- - <=
|
34
|
+
- - "<="
|
35
35
|
- !ruby/object:Gem::Version
|
36
36
|
version: 2.0.1
|
37
37
|
type: :runtime
|
38
38
|
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
|
-
- -
|
41
|
+
- - ">="
|
42
42
|
- !ruby/object:Gem::Version
|
43
43
|
version: '1.4'
|
44
|
-
- - <=
|
44
|
+
- - "<="
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: 2.0.1
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: railties
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
|
-
- -
|
51
|
+
- - ">="
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: '0'
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
|
-
- -
|
58
|
+
- - ">="
|
59
59
|
- !ruby/object:Gem::Version
|
60
60
|
version: '0'
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: bundler
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
|
-
- - ~>
|
65
|
+
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
67
|
version: '1.7'
|
68
68
|
type: :development
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
|
-
- - ~>
|
72
|
+
- - "~>"
|
73
73
|
- !ruby/object:Gem::Version
|
74
74
|
version: '1.7'
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: rake
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
|
-
- - ~>
|
79
|
+
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
81
|
version: '10.0'
|
82
82
|
type: :development
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
|
-
- - ~>
|
86
|
+
- - "~>"
|
87
87
|
- !ruby/object:Gem::Version
|
88
88
|
version: '10.0'
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: rspec-rails
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
|
-
- - ~>
|
93
|
+
- - "~>"
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version: 3.
|
95
|
+
version: 3.2.0
|
96
96
|
type: :development
|
97
97
|
prerelease: false
|
98
98
|
version_requirements: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
|
-
- - ~>
|
100
|
+
- - "~>"
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version: 3.
|
102
|
+
version: 3.2.0
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: factory_girl
|
105
105
|
requirement: !ruby/object:Gem::Requirement
|
106
106
|
requirements:
|
107
|
-
- - ~>
|
107
|
+
- - "~>"
|
108
108
|
- !ruby/object:Gem::Version
|
109
109
|
version: 4.4.0
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
112
|
version_requirements: !ruby/object:Gem::Requirement
|
113
113
|
requirements:
|
114
|
-
- - ~>
|
114
|
+
- - "~>"
|
115
115
|
- !ruby/object:Gem::Version
|
116
116
|
version: 4.4.0
|
117
117
|
- !ruby/object:Gem::Dependency
|
118
118
|
name: generator_spec
|
119
119
|
requirement: !ruby/object:Gem::Requirement
|
120
120
|
requirements:
|
121
|
-
- - ~>
|
121
|
+
- - "~>"
|
122
122
|
- !ruby/object:Gem::Version
|
123
123
|
version: 0.9.0
|
124
124
|
type: :development
|
125
125
|
prerelease: false
|
126
126
|
version_requirements: !ruby/object:Gem::Requirement
|
127
127
|
requirements:
|
128
|
-
- - ~>
|
128
|
+
- - "~>"
|
129
129
|
- !ruby/object:Gem::Version
|
130
130
|
version: 0.9.0
|
131
131
|
- !ruby/object:Gem::Dependency
|
132
132
|
name: sqlite3
|
133
133
|
requirement: !ruby/object:Gem::Requirement
|
134
134
|
requirements:
|
135
|
-
- -
|
135
|
+
- - ">="
|
136
136
|
- !ruby/object:Gem::Version
|
137
137
|
version: '0'
|
138
138
|
type: :development
|
139
139
|
prerelease: false
|
140
140
|
version_requirements: !ruby/object:Gem::Requirement
|
141
141
|
requirements:
|
142
|
-
- -
|
142
|
+
- - ">="
|
143
143
|
- !ruby/object:Gem::Version
|
144
144
|
version: '0'
|
145
145
|
- !ruby/object:Gem::Dependency
|
146
146
|
name: database_cleaner
|
147
147
|
requirement: !ruby/object:Gem::Requirement
|
148
148
|
requirements:
|
149
|
-
- - ~>
|
149
|
+
- - "~>"
|
150
150
|
- !ruby/object:Gem::Version
|
151
151
|
version: 1.3.0
|
152
152
|
type: :development
|
153
153
|
prerelease: false
|
154
154
|
version_requirements: !ruby/object:Gem::Requirement
|
155
155
|
requirements:
|
156
|
-
- - ~>
|
156
|
+
- - "~>"
|
157
157
|
- !ruby/object:Gem::Version
|
158
158
|
version: 1.3.0
|
159
159
|
description:
|
@@ -163,9 +163,9 @@ executables: []
|
|
163
163
|
extensions: []
|
164
164
|
extra_rdoc_files: []
|
165
165
|
files:
|
166
|
-
- .gitignore
|
167
|
-
- .rspec
|
168
|
-
- .travis.yml
|
166
|
+
- ".gitignore"
|
167
|
+
- ".rspec"
|
168
|
+
- ".travis.yml"
|
169
169
|
- CHANGELOG.md
|
170
170
|
- CONTRIBUTING.md
|
171
171
|
- Gemfile
|
@@ -178,6 +178,7 @@ files:
|
|
178
178
|
- lib/wine_bouncer.rb
|
179
179
|
- lib/wine_bouncer/auth_methods/auth_methods.rb
|
180
180
|
- lib/wine_bouncer/auth_strategies/default.rb
|
181
|
+
- lib/wine_bouncer/auth_strategies/protected.rb
|
181
182
|
- lib/wine_bouncer/auth_strategies/swagger.rb
|
182
183
|
- lib/wine_bouncer/configuration.rb
|
183
184
|
- lib/wine_bouncer/errors.rb
|
@@ -186,6 +187,7 @@ files:
|
|
186
187
|
- spec/dummy/README.rdoc
|
187
188
|
- spec/dummy/Rakefile
|
188
189
|
- spec/dummy/app/api/default_api.rb
|
190
|
+
- spec/dummy/app/api/protected_api.rb
|
189
191
|
- spec/dummy/app/api/swagger_api.rb
|
190
192
|
- spec/dummy/app/assets/images/.keep
|
191
193
|
- spec/dummy/app/assets/javascripts/application.js
|
@@ -236,6 +238,7 @@ files:
|
|
236
238
|
- spec/factories/application.rb
|
237
239
|
- spec/factories/user.rb
|
238
240
|
- spec/intergration/oauth2_default_strategy_spec.rb
|
241
|
+
- spec/intergration/oauth2_protected_strategy_spec.rb
|
239
242
|
- spec/intergration/oauth2_swagger_strategy_spec.rb
|
240
243
|
- spec/lib/generators/wine_bouncer/initializer_generator_spec.rb
|
241
244
|
- spec/lib/wine_bouncer/auth_methods/auth_methods_spec.rb
|
@@ -254,17 +257,17 @@ require_paths:
|
|
254
257
|
- lib
|
255
258
|
required_ruby_version: !ruby/object:Gem::Requirement
|
256
259
|
requirements:
|
257
|
-
- -
|
260
|
+
- - ">="
|
258
261
|
- !ruby/object:Gem::Version
|
259
262
|
version: '0'
|
260
263
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
261
264
|
requirements:
|
262
|
-
- -
|
265
|
+
- - ">="
|
263
266
|
- !ruby/object:Gem::Version
|
264
267
|
version: '0'
|
265
268
|
requirements: []
|
266
269
|
rubyforge_project:
|
267
|
-
rubygems_version: 2.
|
270
|
+
rubygems_version: 2.4.5
|
268
271
|
signing_key:
|
269
272
|
specification_version: 4
|
270
273
|
summary: A Ruby gem that allows Oauth2 protection with Doorkeeper for Grape Api's
|
@@ -272,6 +275,7 @@ test_files:
|
|
272
275
|
- spec/dummy/README.rdoc
|
273
276
|
- spec/dummy/Rakefile
|
274
277
|
- spec/dummy/app/api/default_api.rb
|
278
|
+
- spec/dummy/app/api/protected_api.rb
|
275
279
|
- spec/dummy/app/api/swagger_api.rb
|
276
280
|
- spec/dummy/app/assets/images/.keep
|
277
281
|
- spec/dummy/app/assets/javascripts/application.js
|
@@ -322,6 +326,7 @@ test_files:
|
|
322
326
|
- spec/factories/application.rb
|
323
327
|
- spec/factories/user.rb
|
324
328
|
- spec/intergration/oauth2_default_strategy_spec.rb
|
329
|
+
- spec/intergration/oauth2_protected_strategy_spec.rb
|
325
330
|
- spec/intergration/oauth2_swagger_strategy_spec.rb
|
326
331
|
- spec/lib/generators/wine_bouncer/initializer_generator_spec.rb
|
327
332
|
- spec/lib/wine_bouncer/auth_methods/auth_methods_spec.rb
|