oauth-bwergemn 1.0.4 → 1.0.5

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: 28680e1cabddf3a646ce5e9b58ad26b9d6e6e5d5dfbc3b7ed18a625a2b0b13a4
4
- data.tar.gz: f198b7a8da14f14a5f66d3361c3ff31e3bddf6974b1d73bdcec3170022fbe524
3
+ metadata.gz: 9793805f550aa496f8c35c722ac4bf677abf5d2836ba0ba703f266dbcafbe0e6
4
+ data.tar.gz: 06445a109f6e7a99a698103e1b841e17bcbb9671f7eb4a423605d24028ce309f
5
5
  SHA512:
6
- metadata.gz: 9321d12b5598bb230196e8fd73162e1e0a51208108c3610e08b5cedac8ed4719fc0210311e3502226dd29830c06bef9a945a3bb924f49bab58a8c8b161d7c5ea
7
- data.tar.gz: c74d19c90247e8cea7871199ec6f8d7518970e66df2497344f672a1bd267ce4a68d260b89db18b927e440b2df795c95d9560b866dcd447cd9a95e369d4adc313
6
+ metadata.gz: 2dc184cb56e5d2ade4d468b18facf61d3ffb19057e0e1e438e548bef94e78c4b31e926989c00078c575c4a5f06997dba7d1e5c7e075ff79bdd4c2df91efe417d
7
+ data.tar.gz: 3be3b01077ed948ac3d01b6fa53103a7712ba05d9a0c837e4a41119d613896b34eff5c441ca1feb2914950eeff09f466421addf9939da9c3acc9f8a4219c2b45
@@ -21,6 +21,7 @@ module OauthBwergemn
21
21
  extend OauthBwergemn::Configuration
22
22
  define_setting :auth_strategy, 'hub'
23
23
  define_setting :resources, user: 'User'
24
+ define_setting :default_resources, :user
24
25
 
25
26
  def self.config_resources
26
27
  resources
@@ -52,13 +52,34 @@ module OauthBwergemn
52
52
  results
53
53
  end
54
54
 
55
+ def is_args_include_validate?
56
+ if args.keys.include?(:validate) && ![true, false].include?(args[:validate])
57
+ raise OauthBwergemn::Errors::InvalidScope.new("Not valid scope '#{args[:validate]}' in `oauth2 scope`")
58
+ end
59
+ args.keys.include?(:validate)
60
+ end
61
+
62
+ def is_args_include_as?
63
+ args.keys.include?(:as)
64
+ end
65
+
66
+ def token_optional?
67
+ is_args_include_validate? && [true, false].include?(args[:validate]) && args[:validate].eql?(false)
68
+ end
69
+
70
+ def token_required?
71
+ is_args_include_validate? && [true, false].include?(args[:validate]) && args[:validate].eql?(true) || is_args_include_valudate?.blank?
72
+ end
73
+
55
74
  def authorize!
56
75
  access = Doorkeeper::AccessToken.find_by(token: token)
57
76
  unless access.present?
58
77
  raise OauthBwergemn::Errors::InvalidToken
59
78
  end
79
+ resource_as = (is_args_include_as? ? args[:as] : OauthBwergemn.default_resources)
80
+
60
81
  # rubocop:disable Security/Eval
61
- resource = eval(OauthBwergemn.resources[args[:as].to_sym]).find_by(id: access.resource_owner_id) rescue nil
82
+ resource = eval(OauthBwergemn.resources[resource_as.to_sym]).find_by(id: access.resource_owner_id) rescue nil
62
83
  # rubocop:enable Security/Eval
63
84
  {
64
85
  resource_owner: resource,
@@ -87,13 +108,18 @@ module OauthBwergemn
87
108
  return unless context.protected_endpoint?
88
109
 
89
110
  self.the_request = env
90
-
91
- if token.present? && context.protected_endpoint?
111
+ if token_optional? && context.protected_endpoint?
112
+ context.resource_token = token
113
+ context.resource_owner = nil
114
+ context.resource_credentials = nil
115
+ elsif token.present? && token_required? && context.protected_endpoint?
92
116
  response = authorize!
93
117
  context.resource_token = token
94
118
  context.resource_owner = response[:resource_owner] rescue nil
95
119
  context.resource_credentials = response[:resource_credentials] rescue nil
96
- elsif token.nil? && context.protected_endpoint?
120
+ elsif context.resource_owner.nil? && context.protected_endpoint?
121
+ raise OauthBwergemn::Errors::InvalidToken
122
+ else
97
123
  raise OauthBwergemn::Errors::InvalidToken
98
124
  end
99
125
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OauthBwergemn
4
- VERSION = '1.0.4'
4
+ VERSION = '1.0.5'
5
5
  public_constant :VERSION
6
6
  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.4
4
+ version: 1.0.5
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-01-12 00:00:00.000000000 Z
11
+ date: 2020-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler