jets 2.2.0 → 2.2.1
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 +4 -4
- data/CHANGELOG.md +3 -0
- data/lib/jets/authorizer/dsl.rb +2 -1
- data/lib/jets/authorizer/helpers/iam_helper.rb +4 -7
- data/lib/jets/cfn/builders/controller_builder.rb +4 -0
- data/lib/jets/controller/authorization.rb +15 -5
- data/lib/jets/resource/api_gateway/method/authorization.rb +1 -1
- data/lib/jets/router/route.rb +1 -1
- data/lib/jets/router/route/{authorization.rb → authorizer.rb} +23 -18
- data/lib/jets/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6becd540bc99766696d49280636867ca4183ab2dc6a9cadec90c9837acd06352
|
4
|
+
data.tar.gz: '0918860cc1c3429635f1d3cba3db58301d0090e55c1382049d23d45f2763dfa2'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8fd318bf3aaa6039226e32a93703ebe5ad89e66b1c739378c525a160a7ae0f902b1709ea421b3849472243f5d3fe3f00ac35f91d7102accf856ceda28f6e3ae9
|
7
|
+
data.tar.gz: b7c0d69d5230806fbd630ac857abb8dd091f6f1dee8a3708f7f1485c57abcd3c063ae2250843a6a91503f23980a19ec8bbb7a388ade6168ec3ab5ac2547a98f7
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,9 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/).
|
5
5
|
|
6
|
+
## [2.2.1]
|
7
|
+
- #369 clean up authorizers and bug fixes
|
8
|
+
|
6
9
|
## [2.2.0]
|
7
10
|
- #368 API Gateway Authorizer Concept Support
|
8
11
|
|
data/lib/jets/authorizer/dsl.rb
CHANGED
@@ -33,7 +33,8 @@ module Jets::Authorizer
|
|
33
33
|
# function associated with the cognito authorizer.
|
34
34
|
def cognito_authorizer(props={})
|
35
35
|
resources = [props]
|
36
|
-
|
36
|
+
# Authorizer name can have dashes, but "method" name should be underscored for correct logical id.
|
37
|
+
meth = props[:name].gsub('-','_')
|
37
38
|
resource = Jets::Resource::ApiGateway::Authorizer.new(props)
|
38
39
|
|
39
40
|
# Mimic task to grab base_replacements, namely namespace.
|
@@ -31,17 +31,14 @@ module Jets::Authorizer::Helpers
|
|
31
31
|
props[:usage_identifier_key] = usage_identifier_key if usage_identifier_key
|
32
32
|
end
|
33
33
|
|
34
|
-
props
|
35
|
-
#
|
36
|
-
props
|
37
|
-
if props['context']
|
38
|
-
props['context'].transform_keys! { |k| pascalize(k) }
|
39
|
-
end
|
34
|
+
props.transform_keys! { |k| pascalize(k) } # Only top-level keys are pascalized
|
35
|
+
# policyDocument is camelized, everything else is left alone
|
36
|
+
props["policyDocument"] = Jets::Camelizer.transform(props["policyDocument"])
|
40
37
|
props
|
41
38
|
end
|
42
39
|
|
43
40
|
def pascalize(value)
|
44
|
-
new_value = value.camelize
|
41
|
+
new_value = value.to_s.camelize
|
45
42
|
first_char = new_value[0..0].downcase
|
46
43
|
new_value[0] = first_char
|
47
44
|
new_value
|
@@ -24,6 +24,10 @@ module Jets::Cfn::Builders
|
|
24
24
|
add_parameter(route.authorizer_id, description: route.authorizer_metadata)
|
25
25
|
end
|
26
26
|
end
|
27
|
+
|
28
|
+
if @app_class.authorizer
|
29
|
+
add_parameter(@app_class.authorizer_id, description: @app_class.authorizer_metadata)
|
30
|
+
end
|
27
31
|
end
|
28
32
|
|
29
33
|
def add_routes
|
@@ -31,24 +31,34 @@ class Jets::Controller
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
def
|
34
|
+
def authorizer_metadata
|
35
|
+
Jets::Router::Route::Authorizer.metadata(auth_to)
|
36
|
+
end
|
37
|
+
|
38
|
+
# Used to add to parameter to controller templates
|
39
|
+
def authorizer_id
|
40
|
+
Jets::Router::Route::Authorizer.logical_id(auth_to)
|
41
|
+
end
|
42
|
+
|
43
|
+
# Used to add to the API::Gateway Method selectively
|
44
|
+
def authorizer_logical_id_for(action_name)
|
35
45
|
return unless auth_to
|
36
46
|
|
37
47
|
only = auth_options[:only].map(&:to_s) if auth_options && auth_options[:only]
|
38
48
|
except = auth_options[:except].map(&:to_s) if auth_options && auth_options[:except]
|
39
49
|
|
40
50
|
if except and !except.include?(action_name)
|
41
|
-
logical_id = Jets::Router::Route.
|
51
|
+
logical_id = Jets::Router::Route::Authorizer.logical_id(auth_to)
|
42
52
|
end
|
43
53
|
|
44
54
|
# only overrides except
|
45
55
|
if only and only.include?(action_name)
|
46
|
-
logical_id = Jets::Router::Route.
|
56
|
+
logical_id = Jets::Router::Route::Authorizer.logical_id(auth_to)
|
47
57
|
end
|
48
58
|
|
49
59
|
# if both only and except are not set then always set the logical_id
|
50
60
|
if !only && !except
|
51
|
-
logical_id = Jets::Router::Route.
|
61
|
+
logical_id = Jets::Router::Route::Authorizer.logical_id(auth_to)
|
52
62
|
end
|
53
63
|
|
54
64
|
logical_id
|
@@ -56,7 +66,7 @@ class Jets::Controller
|
|
56
66
|
|
57
67
|
# Autoamtically sets authorization_type for the specific route based on the controller authorizer
|
58
68
|
def infer_authorization_type_for(action_name)
|
59
|
-
return unless
|
69
|
+
return unless authorizer_logical_id_for(action_name)
|
60
70
|
Jets::Authorizer::Base.authorization_type(auth_to)
|
61
71
|
end
|
62
72
|
|
@@ -5,7 +5,7 @@ class Jets::Resource::ApiGateway::Method
|
|
5
5
|
if @route.authorizer
|
6
6
|
logical_id = @route.authorizer_id
|
7
7
|
elsif controller_klass.authorizer
|
8
|
-
logical_id = controller_klass.
|
8
|
+
logical_id = controller_klass.authorizer_logical_id_for(@route.action_name)
|
9
9
|
end
|
10
10
|
|
11
11
|
"!Ref #{logical_id}" if logical_id
|
data/lib/jets/router/route.rb
CHANGED
@@ -1,30 +1,15 @@
|
|
1
1
|
class Jets::Router::Route
|
2
|
-
module
|
3
|
-
extend ActiveSupport::Concern
|
4
|
-
|
5
|
-
class_methods do
|
6
|
-
# Use by both Route and Controller
|
7
|
-
def authorizer_logical_id(authorizer, prefix_class: true)
|
8
|
-
klass, meth = authorizer.split("#")
|
9
|
-
words = [meth, "authorizer"]
|
10
|
-
words.unshift(klass) if prefix_class
|
11
|
-
words.join('_').camelize # logical_id
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
2
|
+
module Authorizer
|
15
3
|
# IE: main#protect => MainProtectAuthorizer
|
16
4
|
def authorizer_id(prefix_class: true)
|
17
5
|
return unless authorizer
|
18
|
-
|
6
|
+
logical_id(authorizer, prefix_class: prefix_class)
|
19
7
|
end
|
20
8
|
|
21
9
|
# Metadata about the authorizer class that can be used later. Stored in the Authorizer template parameters.
|
22
10
|
# In app_class.rb `def controller_params` it is used to build the input parameters for controller templates.
|
23
11
|
def authorizer_metadata
|
24
|
-
|
25
|
-
authorizer_class = "#{klass}_authorizer".camelize
|
26
|
-
logical_id = authorizer_id(prefix_class: false)
|
27
|
-
"#{authorizer_class}.#{logical_id}"
|
12
|
+
metadata(authorizer)
|
28
13
|
end
|
29
14
|
|
30
15
|
def authorizer
|
@@ -39,10 +24,30 @@ class Jets::Router::Route
|
|
39
24
|
@options[:api_key_required]
|
40
25
|
end
|
41
26
|
|
27
|
+
module ModuleMethods
|
28
|
+
def logical_id(authorizer, prefix_class: true)
|
29
|
+
klass, meth = authorizer.split("#")
|
30
|
+
words = [meth, "authorizer"]
|
31
|
+
words.unshift(klass) if prefix_class
|
32
|
+
words.join('_').camelize # logical_id
|
33
|
+
end
|
34
|
+
|
35
|
+
def metadata(authorizer)
|
36
|
+
klass = authorizer.split("#").first
|
37
|
+
authorizer_class = "#{klass}_authorizer".camelize
|
38
|
+
logical_id = logical_id(authorizer, prefix_class: false)
|
39
|
+
# IE: MainAuthorizer.ProtectAuthorizer
|
40
|
+
"#{authorizer_class}.#{logical_id}"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
include ModuleMethods # so available as instance methods
|
44
|
+
extend ModuleMethods # so also available as module method. IE: Jets::Router::Route::Authorizer.metadata(auth_to)
|
45
|
+
|
42
46
|
private
|
43
47
|
def inferred_authorization_type
|
44
48
|
return unless authorizer
|
45
49
|
Jets::Authorizer::Base.authorization_type(authorizer)
|
46
50
|
end
|
51
|
+
|
47
52
|
end
|
48
53
|
end
|
data/lib/jets/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tung Nguyen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-09-
|
11
|
+
date: 2019-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionmailer
|
@@ -940,7 +940,7 @@ files:
|
|
940
940
|
- lib/jets/router/resources/filter.rb
|
941
941
|
- lib/jets/router/resources/options.rb
|
942
942
|
- lib/jets/router/route.rb
|
943
|
-
- lib/jets/router/route/
|
943
|
+
- lib/jets/router/route/authorizer.rb
|
944
944
|
- lib/jets/router/scope.rb
|
945
945
|
- lib/jets/router/util.rb
|
946
946
|
- lib/jets/rule/base.rb
|