multi-tenant-support 1.1.1 → 1.2.0
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/README.md +27 -0
- data/lib/generators/multi_tenant_support/templates/initializer.rb.tt +4 -0
- data/lib/multi-tenant-support.rb +5 -0
- data/lib/multi_tenant_support/active_job.rb +16 -0
- data/lib/multi_tenant_support/config/console.rb +21 -0
- data/lib/multi_tenant_support/railtie.rb +8 -0
- data/lib/multi_tenant_support/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9834d4e3e978120e9a85d8da767d2079a34c416086557b84c4e54730819a1ffb
|
4
|
+
data.tar.gz: 41e2d934baa4668efc23bddb8d76dbb4a5b759ae4103f172c71b9406bc08c80d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc6ba9df8591e04abcc454981b15435261708ab23c39f54bcf9d321e362c8e631c5d74aa35c29a81030da7215b2e96e868acca238318f98a656ad38de37e6028
|
7
|
+
data.tar.gz: bdf08283a7363e65198a8de9d6ce1039886377d85870b7da13938cfe05c4d66d09c6281d743e6f9b6f8cd0792ae32cd218ea3513c9d21f8570318d74e797415e
|
data/README.md
CHANGED
@@ -306,6 +306,29 @@ Currently, we don't have a good way to protect this method. So please use `upser
|
|
306
306
|
|
307
307
|
This gem has override `unscoped` to prevent the default tenant scope be scoped out. But if you really want to scope out the default tenant scope, you can use `unscope_tenant`.
|
308
308
|
|
309
|
+
### Console
|
310
|
+
|
311
|
+
Console does not allow read across tenant by default. But you have several ways to change that:
|
312
|
+
|
313
|
+
1. Set `allow_read_across_tenant_by_default` in the initialize file
|
314
|
+
|
315
|
+
```ruby
|
316
|
+
console do |config|
|
317
|
+
config.allow_read_across_tenant_by_default = true
|
318
|
+
end
|
319
|
+
```
|
320
|
+
2. Set the environment variable `ALLOW_READ_ACROSS_TENANT` when call consoel command
|
321
|
+
|
322
|
+
```bash
|
323
|
+
ALLOW_READ_ACROSS_TENANT=1 rails console
|
324
|
+
```
|
325
|
+
3. Manual change it in console
|
326
|
+
|
327
|
+
```ruby
|
328
|
+
$ rails c
|
329
|
+
$ irb(main):001:0> MultiTenantSupport.allow_read_across_tenant
|
330
|
+
```
|
331
|
+
|
309
332
|
## Code Example
|
310
333
|
|
311
334
|
### Database Schema
|
@@ -340,6 +363,10 @@ MultiTenantSupport.configure do
|
|
340
363
|
config.excluded_subdomains = ['www']
|
341
364
|
config.host = 'example.com'
|
342
365
|
end
|
366
|
+
|
367
|
+
console do |config|
|
368
|
+
config.allow_read_across_tenant_by_default = false
|
369
|
+
end
|
343
370
|
end
|
344
371
|
```
|
345
372
|
|
@@ -12,6 +12,10 @@ MultiTenantSupport.configure do
|
|
12
12
|
config.excluded_subdomains = ['www']
|
13
13
|
config.host = 'REPLACE.ME'
|
14
14
|
end
|
15
|
+
|
16
|
+
console do |config|
|
17
|
+
config.allow_read_across_tenant_by_default = false
|
18
|
+
end
|
15
19
|
end
|
16
20
|
|
17
21
|
# Uncomment if you are using sidekiq without ActiveJob
|
data/lib/multi-tenant-support.rb
CHANGED
@@ -4,6 +4,7 @@ require "multi_tenant_support/errors"
|
|
4
4
|
require "multi_tenant_support/config/app"
|
5
5
|
require "multi_tenant_support/config/controller"
|
6
6
|
require "multi_tenant_support/config/model"
|
7
|
+
require "multi_tenant_support/config/console"
|
7
8
|
require "multi_tenant_support/current"
|
8
9
|
require "multi_tenant_support/find_tenant_account"
|
9
10
|
require "multi_tenant_support/concern/controller_concern"
|
@@ -33,6 +34,10 @@ module MultiTenantSupport
|
|
33
34
|
end
|
34
35
|
end
|
35
36
|
|
37
|
+
def allow_read_across_tenant?
|
38
|
+
!disallow_read_across_tenant?
|
39
|
+
end
|
40
|
+
|
36
41
|
def disallow_read_across_tenant?
|
37
42
|
!Current.allow_read_across_tenant
|
38
43
|
end
|
@@ -8,6 +8,7 @@ module MultiTenantSupport
|
|
8
8
|
end
|
9
9
|
|
10
10
|
class_methods do
|
11
|
+
|
11
12
|
if Gem::Version.new(Rails.version) < Gem::Version.new("7.0.0.alpha1")
|
12
13
|
def perform_now(*args)
|
13
14
|
job = job_or_instantiate(*args)
|
@@ -23,6 +24,21 @@ module MultiTenantSupport
|
|
23
24
|
end
|
24
25
|
")
|
25
26
|
end
|
27
|
+
|
28
|
+
def execute(job_data)
|
29
|
+
keep_current_tenant_unchange do
|
30
|
+
super(job_data)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def keep_current_tenant_unchange
|
37
|
+
_current_tenant = MultiTenantSupport::Current.tenant_account
|
38
|
+
yield
|
39
|
+
ensure
|
40
|
+
MultiTenantSupport::Current.tenant_account = _current_tenant
|
41
|
+
end
|
26
42
|
end
|
27
43
|
|
28
44
|
def perform_now
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module MultiTenantSupport
|
2
|
+
|
3
|
+
module Config
|
4
|
+
class Console
|
5
|
+
attr_writer :allow_read_across_tenant_by_default
|
6
|
+
|
7
|
+
def allow_read_across_tenant_by_default
|
8
|
+
@allow_read_across_tenant_by_default ||= false
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
module_function
|
14
|
+
def console
|
15
|
+
@console ||= Config::Console.new
|
16
|
+
return @console unless block_given?
|
17
|
+
|
18
|
+
yield @console
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -9,5 +9,13 @@ module MultiTenantSupport
|
|
9
9
|
config.app_generators.templates.unshift(active_record_templates)
|
10
10
|
end
|
11
11
|
|
12
|
+
console do
|
13
|
+
if ENV["ALLOW_READ_ACROSS_TENANT"] || MultiTenantSupport.console.allow_read_across_tenant_by_default
|
14
|
+
MultiTenantSupport.allow_read_across_tenant
|
15
|
+
else
|
16
|
+
MultiTenantSupport.disallow_read_across_tenant
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
12
20
|
end
|
13
21
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: multi-tenant-support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hopper Gee
|
@@ -45,6 +45,7 @@ files:
|
|
45
45
|
- lib/multi_tenant_support/concern/controller_concern.rb
|
46
46
|
- lib/multi_tenant_support/concern/model_concern.rb
|
47
47
|
- lib/multi_tenant_support/config/app.rb
|
48
|
+
- lib/multi_tenant_support/config/console.rb
|
48
49
|
- lib/multi_tenant_support/config/controller.rb
|
49
50
|
- lib/multi_tenant_support/config/model.rb
|
50
51
|
- lib/multi_tenant_support/current.rb
|