openstax_api 6.1.3 → 6.1.4
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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 746db2fb6fe3b25aec0676babf6d00b1622a85f7
|
4
|
+
data.tar.gz: c0d44680151a75c935572ea92b3431590dd0732e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4e10fd4dd99e9ced00339b7ccb3a33b1f55509e6e284fa1f0d18232e4e72cb0cbd6c714720fe66a29c1d62322f3f7aea0d7bc5151974cf8cd3c0a29c03377fd
|
7
|
+
data.tar.gz: fb12ad71bc8c88482d23418f70ff1fead6a1e7dfb1e57bc5bf6c62c59a48a4815292a1e5f8279bbdc0f2a524c3bebd706e9c5ce030ede71ac853132eb09ea43e
|
@@ -27,11 +27,12 @@ module OpenStax
|
|
27
27
|
before_filter :doorkeeper_authorize!, if: :token_user?
|
28
28
|
|
29
29
|
# Except for users logged in via a cookie, we can disable CSRF protection and enable CORS
|
30
|
-
skip_before_filter :verify_authenticity_token, unless: :
|
30
|
+
skip_before_filter :verify_authenticity_token, unless: :local_session_user?
|
31
|
+
skip_before_filter :authenticate_user!, only: :options
|
31
32
|
skip_before_filter :verify_authenticity_token, only: :options
|
32
|
-
|
33
|
-
before_filter :
|
34
|
-
after_filter
|
33
|
+
|
34
|
+
before_filter :maybe_set_cors_headers
|
35
|
+
after_filter :maybe_set_cors_headers
|
35
36
|
|
36
37
|
# Keep old current_user method so we can use it
|
37
38
|
alias_method :current_session_user, OpenStax::Api.configuration.current_user_method
|
@@ -58,6 +59,11 @@ module OpenStax
|
|
58
59
|
|
59
60
|
protected
|
60
61
|
|
62
|
+
# A session user who is not using CORS
|
63
|
+
def local_session_user?
|
64
|
+
session_user? && !request.headers.include?("HTTP_ORIGIN")
|
65
|
+
end
|
66
|
+
|
61
67
|
def session_user?
|
62
68
|
!current_session_user.nil? && \
|
63
69
|
(!current_session_user.respond_to?(:is_anonymous?) || \
|
@@ -75,21 +81,21 @@ module OpenStax
|
|
75
81
|
request.env['action_dispatch.request.content_type'] = 'application/json'
|
76
82
|
end
|
77
83
|
|
84
|
+
# Rails 3.x lacks response.date. Remove `respond_to?` check after update
|
78
85
|
def set_date_header
|
79
|
-
response.date = Time.now
|
86
|
+
response.date = Time.now if response.respond_to?(:date) and not response.date?
|
80
87
|
end
|
81
88
|
|
82
|
-
def
|
89
|
+
def maybe_set_cors_headers
|
90
|
+
# only set headers if browser indicates it's using CORS by setting the ORIGIN
|
91
|
+
return unless request.headers["HTTP_ORIGIN"]
|
83
92
|
headers['Access-Control-Allow-Origin'] = validated_cors_origin
|
93
|
+
headers['Access-Control-Allow-Credentials'] = 'true'
|
84
94
|
headers['Access-Control-Allow-Methods'] = 'GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS'
|
85
95
|
headers['Access-Control-Allow-Headers'] = 'X-Requested-With, X-Prototype-Version, X-CSRF-Token, Token, Authorization, Content-Type'
|
86
96
|
headers['Access-Control-Max-Age'] = '86400'
|
87
97
|
end
|
88
98
|
|
89
|
-
def set_cors_headers
|
90
|
-
headers['Access-Control-Allow-Origin'] = validated_cors_origin
|
91
|
-
end
|
92
|
-
|
93
99
|
def validated_cors_origin
|
94
100
|
if OpenStax::Api.configuration.validate_cors_origin &&
|
95
101
|
OpenStax::Api.configuration.validate_cors_origin[ request ]
|
@@ -35,7 +35,7 @@ module OpenStax
|
|
35
35
|
# If not, we're in case #1 above and the User should be
|
36
36
|
# retrieved from the non_doorkeeper_user_proc.
|
37
37
|
@user ||= @doorkeeper_token ? \
|
38
|
-
USER_CLASS.
|
38
|
+
USER_CLASS.where(id: @doorkeeper_token.try(:resource_owner_id)).first : \
|
39
39
|
@non_doorkeeper_user_proc.call
|
40
40
|
end
|
41
41
|
|
data/lib/openstax/api/version.rb
CHANGED
@@ -115,7 +115,7 @@ module OpenStax
|
|
115
115
|
|
116
116
|
it 'sets the CORS headers for anonymous users' do
|
117
117
|
get 'dummy'
|
118
|
-
expect(response.headers['Access-Control-Allow-Origin']).to
|
118
|
+
expect(response.headers['Access-Control-Allow-Origin']).to be_nil
|
119
119
|
expect(response.headers['Access-Control-Allow-Credentials']).to be_nil
|
120
120
|
end
|
121
121
|
|
@@ -123,14 +123,14 @@ module OpenStax
|
|
123
123
|
token = Doorkeeper::AccessToken.create!.token
|
124
124
|
@request.headers['Authorization'] = "Bearer #{token}"
|
125
125
|
get 'dummy'
|
126
|
-
expect(response.headers['Access-Control-Allow-Origin']).to
|
126
|
+
expect(response.headers['Access-Control-Allow-Origin']).to be_nil
|
127
127
|
expect(response.headers['Access-Control-Allow-Credentials']).to be_nil
|
128
128
|
end
|
129
129
|
|
130
130
|
it 'sets the CORS headers for session users (the browser should block the request due to no Access-Control-Allow-Credentials header)' do
|
131
131
|
@controller.present_user = user
|
132
132
|
get 'dummy'
|
133
|
-
expect(response.headers['Access-Control-Allow-Origin']).to
|
133
|
+
expect(response.headers['Access-Control-Allow-Origin']).to be_nil
|
134
134
|
expect(response.headers['Access-Control-Allow-Credentials']).to be_nil
|
135
135
|
end
|
136
136
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openstax_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.1.
|
4
|
+
version: 6.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dante Soares
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2016-05-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|