devise_token_auth_multitenancy 1.1.3.alpha1 → 1.1.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a2629c625678b6fe3183a4911f62928760efb42e3dbc8ba0d3d0ad683f16ed53
4
- data.tar.gz: 11e0d389391f5e9b10c91f8ea40de6d1c47d522da183c7985772b1d7a802849f
3
+ metadata.gz: 9f940e116f3fdd07602f3d7003fc16fe58b0094d5ef82409bd8f573df191704a
4
+ data.tar.gz: 201a15e02f827171b3e82cfe2c919df345b40e78c8b9f43fa420f66344e2f7d8
5
5
  SHA512:
6
- metadata.gz: 72539e4fb0909287d245e12c4eb969a5ab3c7d725d635e3aed294eb0e9aa5f3f16c9e8071cf35217b6fc00f243d028e49818b5c29d7fb629c61fb9237b856b6d
7
- data.tar.gz: 5de4ac336c727ee7bcdd338b243526c2701ed50a6ecdd488bcfbce3012f62b4a6f80e54ba085faf7aa3097fb71ee06c4722ac92d78cb173788781deeda20a00b
6
+ metadata.gz: b27b3d4fa8873b5f8aa6a19ec4dc324206fa4813888162c7f35357340d8af21ee704c025c8fb78fe263b70813ada624b9e32d9bd09e2e4e8ca6b5b73ab3b4b39
7
+ data.tar.gz: 2e18d3a5cd4bdf14a6022772284b85505949a97b204924652b2d6fa7bd9eeba000dddb8164ecb251a7b9073c936d09987f1ef9ed0178f3334ebedd0ae2a8c647
@@ -20,12 +20,8 @@ module DeviseTokenAuth::Concerns::ResourceFinder
20
20
  end
21
21
 
22
22
  def find_resource(field, value)
23
- @resource = if resource_class.try(:connection_config).try(:[], :adapter).try(:include?, 'mysql')
24
- # fix for mysql default case insensitivity
25
- resource_class.where("BINARY #{field} = ? AND provider= ?", value, provider).first
26
- else
27
- resource_class.dta_find_by(field => value, 'provider' => provider)
28
- end
23
+ attrs = { field => value, 'provider' => provider }
24
+ @resource = resource_class.dta_find_by(attrs, self.instance_eval(&DeviseTokenAuth.multitenancy_finder_params))
29
25
  end
30
26
 
31
27
  def resource_class(m = nil)
@@ -66,7 +66,7 @@ module DeviseTokenAuth::Concerns::SetUserByToken
66
66
  end
67
67
 
68
68
  # mitigate timing attacks by finding by uid instead of auth token
69
- user = uid && rc.dta_find_by(uid: uid)
69
+ user = uid && rc.dta_find_by({uid: uid}, self.instance_eval(&DeviseTokenAuth.multitenancy_finder_params))
70
70
  scope = rc.to_s.underscore.to_sym
71
71
 
72
72
  if user && user.valid_token?(@token.token, @token.client)
@@ -35,7 +35,7 @@ module DeviseTokenAuth
35
35
 
36
36
  @email = get_case_insensitive_field_from_resource_params(:email)
37
37
 
38
- @resource = resource_class.dta_find_by(uid: @email, provider: provider)
38
+ @resource = resource_class.dta_find_by({uid: @email, provider: provider}, self.instance_eval(&DeviseTokenAuth.multitenancy_finder_params))
39
39
 
40
40
  return render_not_found_error unless @resource
41
41
 
@@ -9,7 +9,7 @@ module DeviseTokenAuth::Concerns::UserOmniauthCallbacks
9
9
  validates_presence_of :uid, unless: :email_provider?
10
10
 
11
11
  # only validate unique emails among email registration users
12
- validates :email, uniqueness: { case_sensitive: false, scope: :provider }, on: :create, if: :email_provider?
12
+ validates :email, uniqueness: { case_sensitive: false, scope: [ :provider ] + DeviseTokenAuth.multitenancy_scope_fields }, on: :create, if: :email_provider?
13
13
 
14
14
  # keep uid in sync with email
15
15
  before_save :sync_uid
@@ -27,7 +27,9 @@ module DeviseTokenAuth
27
27
  :headers_names,
28
28
  :bypass_sign_in,
29
29
  :send_confirmation_email,
30
- :require_client_password_reset_token
30
+ :require_client_password_reset_token,
31
+ :multitenancy_scope_fields,
32
+ :multitenancy_finder_params
31
33
 
32
34
  self.change_headers_on_each_request = true
33
35
  self.max_number_of_devices = 10
@@ -50,6 +52,8 @@ module DeviseTokenAuth
50
52
  self.bypass_sign_in = true
51
53
  self.send_confirmation_email = false
52
54
  self.require_client_password_reset_token = false
55
+ self.multitenancy_scope_fields = []
56
+ self.multitenancy_finder_params = lambda { return {} }
53
57
 
54
58
  def self.setup(&block)
55
59
  yield self
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DeviseTokenAuth
4
- VERSION = '1.1.3.alpha1'.freeze
4
+ VERSION = '1.1.3.1'.freeze
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise_token_auth_multitenancy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3.alpha1
4
+ version: 1.1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lynn Hurley
@@ -365,9 +365,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
365
365
  version: 2.2.0
366
366
  required_rubygems_version: !ruby/object:Gem::Requirement
367
367
  requirements:
368
- - - ">"
368
+ - - ">="
369
369
  - !ruby/object:Gem::Version
370
- version: 1.3.1
370
+ version: '0'
371
371
  requirements: []
372
372
  rubygems_version: 3.0.6
373
373
  signing_key: