oauth-bwergemn 1.0.7 → 1.0.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c8f5bfdb98626c73d0903e2822e6873f0c7c87e71857553dba82afccd33ceac0
4
- data.tar.gz: 9a1b3d7cdd3939654fd5211dc6f44f7577522ccb1d3e280b7cc899ddc104361f
3
+ metadata.gz: 3f8e5aeeda88d2bca5a9498576dc71b9a2d56c7d851ae5fa73f586b10e3596ef
4
+ data.tar.gz: e598402a90eb83d96ced18e196d33936c6a4d00555726efcb4545683325e2124
5
5
  SHA512:
6
- metadata.gz: 9328f3857d47d2bf6d9c1f447c4252c4102a06d179cfa0698696b76d8033f035c2d6614bb45a35ecb3a0da7b0c37ce16f19a4983b94d7986ffb46817184052de
7
- data.tar.gz: 81b5c9f49e570bbe69962ccc8d9b34f076000f03f7fdb6cf947f6e1922941f5f5400fddfe58152cfa3b75edde78605fbe033e513f4af7690049a817f5d9525cf
6
+ metadata.gz: aa7deea5c24d680493bbb8be4896e06952a380722be880f538714c32a4d6fa3a99eaa3b2de378b5018994bdd17e607b0361803f848ed3842b0b24e678777ac56
7
+ data.tar.gz: 1cf80b2c26d650975807ce636f45097a76dea8c94d4826f436ff165be2b3c7a88c1cac1598c986c24f6a07a9e8d41ef0e2718faef95f3f166a8df101d1ea4ab9
@@ -1,55 +1,66 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- oauth-bwergemn (1.0.7)
5
- grape (~> 1.2.0)
4
+ oauth-bwergemn (1.0.12)
5
+ grape (~> 1.3.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- activesupport (6.0.2.1)
10
+ activesupport (6.0.3.4)
11
11
  concurrent-ruby (~> 1.0, >= 1.0.2)
12
12
  i18n (>= 0.7, < 2)
13
13
  minitest (~> 5.1)
14
14
  tzinfo (~> 1.1)
15
- zeitwerk (~> 2.2)
16
- ast (2.4.0)
17
- axiom-types (0.1.1)
18
- descendants_tracker (~> 0.0.4)
19
- ice_nine (~> 0.11.0)
20
- thread_safe (~> 0.3, >= 0.3.1)
15
+ zeitwerk (~> 2.2, >= 2.2.2)
16
+ ast (2.4.1)
21
17
  builder (3.2.4)
22
- coercible (1.0.0)
23
- descendants_tracker (~> 0.0.1)
24
- concurrent-ruby (1.1.6)
25
- descendants_tracker (0.0.4)
26
- thread_safe (~> 0.3, >= 0.3.1)
27
- diff-lcs (1.3)
28
- equalizer (0.0.11)
29
- grape (1.2.5)
18
+ concurrent-ruby (1.1.7)
19
+ diff-lcs (1.4.4)
20
+ dry-configurable (0.11.6)
21
+ concurrent-ruby (~> 1.0)
22
+ dry-core (~> 0.4, >= 0.4.7)
23
+ dry-equalizer (~> 0.2)
24
+ dry-container (0.7.2)
25
+ concurrent-ruby (~> 1.0)
26
+ dry-configurable (~> 0.1, >= 0.1.3)
27
+ dry-core (0.4.9)
28
+ concurrent-ruby (~> 1.0)
29
+ dry-equalizer (0.3.0)
30
+ dry-inflector (0.2.0)
31
+ dry-logic (1.0.8)
32
+ concurrent-ruby (~> 1.0)
33
+ dry-core (~> 0.2)
34
+ dry-equalizer (~> 0.2)
35
+ dry-types (1.4.0)
36
+ concurrent-ruby (~> 1.0)
37
+ dry-container (~> 0.3)
38
+ dry-core (~> 0.4, >= 0.4.4)
39
+ dry-equalizer (~> 0.3)
40
+ dry-inflector (~> 0.1, >= 0.1.2)
41
+ dry-logic (~> 1.0, >= 1.0.2)
42
+ grape (1.3.3)
30
43
  activesupport
31
44
  builder
45
+ dry-types (>= 1.1)
32
46
  mustermann-grape (~> 1.0.0)
33
47
  rack (>= 1.3.0)
34
48
  rack-accept
35
- virtus (>= 1.0.0)
36
- i18n (1.8.2)
49
+ i18n (1.8.5)
37
50
  concurrent-ruby (~> 1.0)
38
- ice_nine (0.11.2)
39
51
  jaro_winkler (1.5.4)
40
- minitest (5.14.0)
52
+ minitest (5.14.2)
41
53
  mustermann (1.1.1)
42
54
  ruby2_keywords (~> 0.0.1)
43
55
  mustermann-grape (1.0.1)
44
56
  mustermann (>= 1.0.0)
45
- parallel (1.19.1)
46
- parser (2.7.0.2)
47
- ast (~> 2.4.0)
48
- rack (2.0.8)
57
+ parallel (1.19.2)
58
+ parser (2.7.1.4)
59
+ ast (~> 2.4.1)
60
+ rack (2.2.3)
49
61
  rack-accept (0.4.5)
50
62
  rack (>= 0.4)
51
63
  rainbow (3.0.0)
52
- rake (10.5.0)
53
64
  rspec (3.7.0)
54
65
  rspec-core (~> 3.7.0)
55
66
  rspec-expectations (~> 3.7.0)
@@ -75,15 +86,10 @@ GEM
75
86
  ruby-progressbar (1.10.1)
76
87
  ruby2_keywords (0.0.2)
77
88
  thread_safe (0.3.6)
78
- tzinfo (1.2.6)
89
+ tzinfo (1.2.7)
79
90
  thread_safe (~> 0.1)
80
- unicode-display_width (1.6.0)
81
- virtus (1.0.5)
82
- axiom-types (~> 0.1)
83
- coercible (~> 1.0)
84
- descendants_tracker (~> 0.0, >= 0.0.3)
85
- equalizer (~> 0.0, >= 0.0.9)
86
- zeitwerk (2.3.0)
91
+ unicode-display_width (1.6.1)
92
+ zeitwerk (2.4.0)
87
93
 
88
94
  PLATFORMS
89
95
  ruby
@@ -91,8 +97,6 @@ PLATFORMS
91
97
  DEPENDENCIES
92
98
  bundler (~> 2.1.0)
93
99
  oauth-bwergemn!
94
- rack (~> 2.0.8)
95
- rake (~> 10.0)
96
100
  rspec (~> 3.7.0)
97
101
  rubocop (~> 0.79.0)
98
102
  rubocop-performance (~> 1.5.2)
@@ -22,6 +22,7 @@ module OauthBwergemn
22
22
  define_setting :auth_strategy, 'hub'
23
23
  define_setting :resources, user: 'User'
24
24
  define_setting :default_resources, :user
25
+ define_setting :is_custom_scopes, false
25
26
 
26
27
  def self.config_resources
27
28
  resources
@@ -46,21 +46,41 @@ module OauthBwergemn
46
46
  results
47
47
  end
48
48
 
49
+ def sync_scopes_from resource , to:
50
+ to.update(scopes: resource.scopes.join(',')) rescue nil
51
+ end
52
+
49
53
  def scopes
50
54
  results = []
51
55
  auth_strategy.auth_scopes.map { |s| (results << s) unless s.is_a?(Hash) }
52
- results
56
+ results.map! &:to_sym
57
+ end
58
+
59
+ def access_scopes access
60
+ if OauthBwergemn.is_custom_scopes
61
+ access.scopes.map!(&:to_sym) rescue []
62
+ else
63
+ access.scopes.all.map!(&:to_sym) rescue []
64
+ end
53
65
  end
54
66
 
55
67
  def is_args_include_validate?
56
- if args.keys.include?(:validate) && ![true, false].include?(args[:validate])
68
+ if args.key?(:validate) && ![true, false].include?(args[:validate])
57
69
  raise OauthBwergemn::Errors::InvalidScope.new("Not valid scope '#{args[:validate]}' in `oauth2 scope`")
58
70
  end
59
- args.keys.include?(:validate)
71
+ args.key?(:validate)
60
72
  end
61
73
 
62
74
  def is_args_include_as?
63
- args.keys.include?(:as)
75
+ args.key?(:as)
76
+ end
77
+
78
+ def scope_authorize! access
79
+ if scopes.present? && access
80
+ unless (scopes & (access_scopes access)).present?
81
+ raise OauthBwergemn::Errors::InvalidScope.new('OAuth Scope is disallowed')
82
+ end
83
+ end
64
84
  end
65
85
 
66
86
  def token_optional?
@@ -77,15 +97,20 @@ module OauthBwergemn
77
97
  raise OauthBwergemn::Errors::InvalidToken
78
98
  end
79
99
  resource_as = (is_args_include_as? ? args[:as] : OauthBwergemn.default_resources)
80
-
81
100
  # rubocop:disable Security/Eval
82
- resource = eval(OauthBwergemn.resources[resource_as.to_sym]).find_by(id: access.resource_owner_id) rescue nil
101
+ resource = eval(OauthBwergemn.resources[resource_as.to_sym]).where(id: access.resource_owner_id).last rescue nil
83
102
  # rubocop:enable Security/Eval
103
+ sync_scopes_from resource, to: access
104
+ if OauthBwergemn.is_custom_scopes
105
+ scope_authorize! resource
106
+ else
107
+ scope_authorize! access
108
+ end
84
109
  {
85
110
  resource_owner: resource,
86
111
  resource_credential: {
87
112
  access_token: access.token,
88
- scopes: scopes,
113
+ scopes: (access_scopes access),
89
114
  token_type: 'bearer',
90
115
  expires_in: access.expires_in,
91
116
  refresh_token: access.refresh_token,
@@ -112,6 +137,11 @@ module OauthBwergemn
112
137
  context.resource_token = token
113
138
  context.resource_owner = nil
114
139
  context.resource_credentials = nil
140
+ response = authorize! rescue nil
141
+ if response.present?
142
+ context.resource_owner = response[:resource_owner] rescue nil
143
+ context.resource_credentials = response[:resource_credentials] rescue nil
144
+ end
115
145
  elsif token.present? && token_required? && context.protected_endpoint?
116
146
  response = authorize!
117
147
  context.resource_token = token
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OauthBwergemn
4
- VERSION = '1.0.7'
4
+ VERSION = '1.0.12'
5
5
  public_constant :VERSION
6
6
  end
@@ -34,10 +34,8 @@ Gem::Specification.new do |spec|
34
34
  spec.require_paths = ['lib']
35
35
 
36
36
  spec.add_development_dependency 'bundler', '~> 2.1.0'
37
- spec.add_development_dependency 'rake', '~> 10.0'
38
- spec.add_development_dependency 'rack', '~> 2.0.8'
39
37
  spec.add_development_dependency 'rspec', '~> 3.7.0'
40
38
  spec.add_development_dependency 'rubocop', '~> 0.79.0'
41
39
  spec.add_development_dependency 'rubocop-performance', '~> 1.5.2'
42
- spec.add_dependency 'grape', '~> 1.2.0'
40
+ spec.add_dependency 'grape', '~> 1.3.0'
43
41
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oauth-bwergemn
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alam Ybs
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-09 00:00:00.000000000 Z
11
+ date: 2020-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -24,34 +24,6 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 2.1.0
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '10.0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '10.0'
41
- - !ruby/object:Gem::Dependency
42
- name: rack
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: 2.0.8
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: 2.0.8
55
27
  - !ruby/object:Gem::Dependency
56
28
  name: rspec
57
29
  requirement: !ruby/object:Gem::Requirement
@@ -100,14 +72,14 @@ dependencies:
100
72
  requirements:
101
73
  - - "~>"
102
74
  - !ruby/object:Gem::Version
103
- version: 1.2.0
75
+ version: 1.3.0
104
76
  type: :runtime
105
77
  prerelease: false
106
78
  version_requirements: !ruby/object:Gem::Requirement
107
79
  requirements:
108
80
  - - "~>"
109
81
  - !ruby/object:Gem::Version
110
- version: 1.2.0
82
+ version: 1.3.0
111
83
  description: Oauth Bwergemn is a Grape middleware to connect your API resources with
112
84
  your API authenticator.
113
85
  email: