oauth-bwergemn 1.0.8 → 1.1.0

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: a1daa159a5dd3a2a5c037c16e3a6192e0804b40b411e80a6d0df733db5917f97
4
- data.tar.gz: 7e5e7a9b0d744b61222b989b18ff949cc5b52a3b5061fdb70e4d74e242a32600
3
+ metadata.gz: 6a3a1bda0e28d8c8d53cbc4bb5442835c45958338983dab5fe2e76e8fe5450a3
4
+ data.tar.gz: 4085f3594bc3c8b83ab78132c25a3d81e1f6940cbe370848ddc0f31602e35de5
5
5
  SHA512:
6
- metadata.gz: c9b53c1a87a5b5ee2508ac3612fd0d26e104045baa21b2bdb2ab905300c778e2a1091d33e93656d771e249ee3b6e0d5373765a5889f5b3b6ae0536d0bb7be127
7
- data.tar.gz: 80655bd44534620124ee770c556ec14e390e71f81f28221b4d057c3125f3108a7995aa791f1d95b8090967ab550f64272c7e37d9b1650539c4b379b4edc1ff61
6
+ metadata.gz: 177e4ef9113f50b2b1489311291ea3c2cac3685beb83a68d4bffe83097c7fa604cb2b8e9c8cf8dad89e4d0cdbb7a08c7a9a7d8a4e58059221496e7cea6c52d03
7
+ data.tar.gz: 6f16de970e26f81f82defab65e589d4f10bbab2dbdd710621854ecd21657ae1b149c52d2d157d8e5efc136f15732340ceb0df032b9fd16cb6ea230d8bb467ad3
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.0.0
data/Gemfile.lock CHANGED
@@ -1,101 +1,58 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- oauth-bwergemn (1.0.8)
5
- grape (~> 1.2.0)
4
+ oauth-bwergemn (1.1.0)
6
5
 
7
6
  GEM
8
7
  remote: https://rubygems.org/
9
8
  specs:
10
- activesupport (6.0.2.1)
11
- concurrent-ruby (~> 1.0, >= 1.0.2)
12
- i18n (>= 0.7, < 2)
13
- minitest (~> 5.1)
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)
21
- 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)
30
- activesupport
31
- builder
32
- mustermann-grape (~> 1.0.0)
33
- rack (>= 1.3.0)
34
- rack-accept
35
- virtus (>= 1.0.0)
36
- i18n (1.8.2)
37
- concurrent-ruby (~> 1.0)
38
- ice_nine (0.11.2)
39
- jaro_winkler (1.5.4)
40
- minitest (5.14.0)
41
- mustermann (1.1.1)
42
- ruby2_keywords (~> 0.0.1)
43
- mustermann-grape (1.0.1)
44
- 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)
49
- rack-accept (0.4.5)
50
- rack (>= 0.4)
9
+ ast (2.4.2)
10
+ diff-lcs (1.4.4)
11
+ parallel (1.20.1)
12
+ parser (3.0.0.0)
13
+ ast (~> 2.4.1)
51
14
  rainbow (3.0.0)
52
- rake (10.5.0)
53
- rspec (3.7.0)
54
- rspec-core (~> 3.7.0)
55
- rspec-expectations (~> 3.7.0)
56
- rspec-mocks (~> 3.7.0)
57
- rspec-core (3.7.1)
58
- rspec-support (~> 3.7.0)
59
- rspec-expectations (3.7.0)
15
+ regexp_parser (2.1.1)
16
+ rexml (3.2.4)
17
+ rspec (3.10.0)
18
+ rspec-core (~> 3.10.0)
19
+ rspec-expectations (~> 3.10.0)
20
+ rspec-mocks (~> 3.10.0)
21
+ rspec-core (3.10.1)
22
+ rspec-support (~> 3.10.0)
23
+ rspec-expectations (3.10.1)
60
24
  diff-lcs (>= 1.2.0, < 2.0)
61
- rspec-support (~> 3.7.0)
62
- rspec-mocks (3.7.0)
25
+ rspec-support (~> 3.10.0)
26
+ rspec-mocks (3.10.2)
63
27
  diff-lcs (>= 1.2.0, < 2.0)
64
- rspec-support (~> 3.7.0)
65
- rspec-support (3.7.1)
66
- rubocop (0.79.0)
67
- jaro_winkler (~> 1.5.1)
28
+ rspec-support (~> 3.10.0)
29
+ rspec-support (3.10.2)
30
+ rubocop (1.8.1)
68
31
  parallel (~> 1.10)
69
- parser (>= 2.7.0.1)
32
+ parser (>= 3.0.0.0)
70
33
  rainbow (>= 2.2.2, < 4.0)
34
+ regexp_parser (>= 1.8, < 3.0)
35
+ rexml
36
+ rubocop-ast (>= 1.2.0, < 2.0)
71
37
  ruby-progressbar (~> 1.7)
72
- unicode-display_width (>= 1.4.0, < 1.7)
73
- rubocop-performance (1.5.2)
74
- rubocop (>= 0.71.0)
75
- ruby-progressbar (1.10.1)
76
- ruby2_keywords (0.0.2)
77
- thread_safe (0.3.6)
78
- tzinfo (1.2.6)
79
- 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)
38
+ unicode-display_width (>= 1.4.0, < 3.0)
39
+ rubocop-ast (1.4.1)
40
+ parser (>= 2.7.1.5)
41
+ rubocop-performance (1.9.2)
42
+ rubocop (>= 0.90.0, < 2.0)
43
+ rubocop-ast (>= 0.4.0)
44
+ ruby-progressbar (1.11.0)
45
+ unicode-display_width (2.0.0)
87
46
 
88
47
  PLATFORMS
89
48
  ruby
90
49
 
91
50
  DEPENDENCIES
92
- bundler (~> 2.1.0)
51
+ bundler (~> 2.2.4)
93
52
  oauth-bwergemn!
94
- rack (~> 2.0.8)
95
- rake (~> 10.0)
96
- rspec (~> 3.7.0)
97
- rubocop (~> 0.79.0)
98
- rubocop-performance (~> 1.5.2)
53
+ rspec (~> 3.10.0)
54
+ rubocop (~> 1.8.0)
55
+ rubocop-performance (~> 1.9.2)
99
56
 
100
57
  BUNDLED WITH
101
- 2.1.0
58
+ 2.2.4
@@ -1,5 +1,7 @@
1
1
  OauthBwergemn.setup do |config|
2
2
  # your authentication server
3
- config.auth_strategy = "hub"
4
- config.resources = { user: "Models::User" } # { admin: "Models::Admin", user: "Models::User" , moderator: "Models::Moderator" }
5
- end
3
+ config.auth_strategy = "hub"
4
+ config.is_custom_scopes = false
5
+ config.resources = { user: "Models::Auth" } # { admin: "Models::Admin", user: "Models::User" , moderator: "Models::Moderator" }
6
+ config.default_resources = :user
7
+ end
@@ -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,
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OauthBwergemn
4
- VERSION = '1.0.8'
4
+ VERSION = '1.1.0'
5
5
  public_constant :VERSION
6
6
  end
@@ -33,11 +33,8 @@ Gem::Specification.new do |spec|
33
33
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
34
34
  spec.require_paths = ['lib']
35
35
 
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
- spec.add_development_dependency 'rspec', '~> 3.7.0'
40
- spec.add_development_dependency 'rubocop', '~> 0.79.0'
41
- spec.add_development_dependency 'rubocop-performance', '~> 1.5.2'
42
- spec.add_dependency 'grape', '~> 1.2.0'
36
+ spec.add_development_dependency 'bundler', '~> 2.2.4'
37
+ spec.add_development_dependency 'rspec', '~> 3.10.0'
38
+ spec.add_development_dependency 'rubocop', '~> 1.8.0'
39
+ spec.add_development_dependency 'rubocop-performance', '~> 1.9.2'
43
40
  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.8
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alam Ybs
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-09 00:00:00.000000000 Z
11
+ date: 2021-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,98 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.1.0
19
+ version: 2.2.4
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
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
26
+ version: 2.2.4
55
27
  - !ruby/object:Gem::Dependency
56
28
  name: rspec
57
29
  requirement: !ruby/object:Gem::Requirement
58
30
  requirements:
59
31
  - - "~>"
60
32
  - !ruby/object:Gem::Version
61
- version: 3.7.0
33
+ version: 3.10.0
62
34
  type: :development
63
35
  prerelease: false
64
36
  version_requirements: !ruby/object:Gem::Requirement
65
37
  requirements:
66
38
  - - "~>"
67
39
  - !ruby/object:Gem::Version
68
- version: 3.7.0
40
+ version: 3.10.0
69
41
  - !ruby/object:Gem::Dependency
70
42
  name: rubocop
71
43
  requirement: !ruby/object:Gem::Requirement
72
44
  requirements:
73
45
  - - "~>"
74
46
  - !ruby/object:Gem::Version
75
- version: 0.79.0
47
+ version: 1.8.0
76
48
  type: :development
77
49
  prerelease: false
78
50
  version_requirements: !ruby/object:Gem::Requirement
79
51
  requirements:
80
52
  - - "~>"
81
53
  - !ruby/object:Gem::Version
82
- version: 0.79.0
54
+ version: 1.8.0
83
55
  - !ruby/object:Gem::Dependency
84
56
  name: rubocop-performance
85
57
  requirement: !ruby/object:Gem::Requirement
86
58
  requirements:
87
59
  - - "~>"
88
60
  - !ruby/object:Gem::Version
89
- version: 1.5.2
61
+ version: 1.9.2
90
62
  type: :development
91
63
  prerelease: false
92
64
  version_requirements: !ruby/object:Gem::Requirement
93
65
  requirements:
94
66
  - - "~>"
95
67
  - !ruby/object:Gem::Version
96
- version: 1.5.2
97
- - !ruby/object:Gem::Dependency
98
- name: grape
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: 1.2.0
104
- type: :runtime
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: 1.2.0
68
+ version: 1.9.2
111
69
  description: Oauth Bwergemn is a Grape middleware to connect your API resources with
112
70
  your API authenticator.
113
71
  email:
@@ -119,6 +77,7 @@ files:
119
77
  - ".gitignore"
120
78
  - ".rspec"
121
79
  - ".rubocop.yml"
80
+ - ".ruby-version"
122
81
  - ".travis.yml"
123
82
  - CODE_OF_CONDUCT.md
124
83
  - Gemfile
@@ -147,7 +106,7 @@ licenses:
147
106
  - MIT
148
107
  metadata:
149
108
  allowed_push_host: https://rubygems.org/
150
- post_install_message:
109
+ post_install_message:
151
110
  rdoc_options: []
152
111
  require_paths:
153
112
  - lib
@@ -162,8 +121,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
162
121
  - !ruby/object:Gem::Version
163
122
  version: '0'
164
123
  requirements: []
165
- rubygems_version: 3.1.1
166
- signing_key:
124
+ rubygems_version: 3.2.3
125
+ signing_key:
167
126
  specification_version: 4
168
127
  summary: Oauth Bwergemn is a Grape middleware for your API authenticator
169
128
  test_files: []