kaui 0.8.0 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +3 -8
- data/README.md +34 -0
- data/app/controllers/kaui/admin_tenants_controller.rb +14 -6
- data/app/views/kaui/admin_tenants/new.html.erb +7 -0
- data/kaui.gemspec +1 -1
- data/lib/kaui/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f76c44debafe012a786bfaad08689567c41e67c1
|
4
|
+
data.tar.gz: 685ef282ca6ec11ce123b672803827ed3ab6bdca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d5e837d361a21b06f0fbb19202170733fcd3fb7e5b5413e7e17aed117b8c7c81af34e55df61f317a2f1acd640143e791b7d574b4e609233bd0c1eb6b5c78dfe6
|
7
|
+
data.tar.gz: 2a86fe5e70491f0e8b5fc472f44282371d7ce68e1b044ce82ff028d07443ce3883569aa63e9777e5dd6ca9df79a8fdf65d7f107caa3fbdb92ec86a0960df53de
|
data/Gemfile.lock
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
kaui (0.8.
|
4
|
+
kaui (0.8.1)
|
5
5
|
cancan (~> 1.6.10)
|
6
6
|
carmen-rails (~> 1.0.0)
|
7
7
|
d3_rails (~> 3.2.8)
|
8
8
|
devise (~> 3.0.2)
|
9
9
|
jquery-rails (~> 3.0.4)
|
10
|
-
killbill-client (~> 0.10.
|
10
|
+
killbill-client (~> 0.10.4)
|
11
11
|
money-rails (~> 0.8.1)
|
12
12
|
rails (~> 3.2.14)
|
13
13
|
symmetric-encryption (~> 3.6.0)
|
@@ -45,11 +45,8 @@ GEM
|
|
45
45
|
multi_json (~> 1.0)
|
46
46
|
arel (3.0.3)
|
47
47
|
bcrypt (3.1.10)
|
48
|
-
bcrypt (3.1.10-java)
|
49
48
|
bcrypt-ruby (3.1.5)
|
50
49
|
bcrypt (>= 3.1.3)
|
51
|
-
bcrypt-ruby (3.1.5-java)
|
52
|
-
bcrypt (>= 3.1.3)
|
53
50
|
builder (3.0.4)
|
54
51
|
cancan (1.6.10)
|
55
52
|
carmen (1.0.1)
|
@@ -79,8 +76,7 @@ GEM
|
|
79
76
|
railties (>= 3.0, < 5.0)
|
80
77
|
thor (>= 0.14, < 2.0)
|
81
78
|
json (1.8.2)
|
82
|
-
|
83
|
-
killbill-client (0.10.3)
|
79
|
+
killbill-client (0.10.4)
|
84
80
|
json (>= 1.2.0)
|
85
81
|
mail (2.5.4)
|
86
82
|
mime-types (~> 1.16)
|
@@ -136,7 +132,6 @@ GEM
|
|
136
132
|
coercible (>= 1.0.0)
|
137
133
|
thor (0.19.1)
|
138
134
|
thread_safe (0.3.4)
|
139
|
-
thread_safe (0.3.4-java)
|
140
135
|
tilt (1.4.1)
|
141
136
|
treetop (1.4.15)
|
142
137
|
polyglot
|
data/README.md
CHANGED
@@ -87,3 +87,37 @@ Then, install and run it from a local directory:
|
|
87
87
|
Alternatively, you can run the `kaui` script under `bin` by setting your loadpath correctly:
|
88
88
|
|
89
89
|
ruby -Ilib bin/kaui /path/to/rails/app --path=$PWD --skip-bundle
|
90
|
+
|
91
|
+
|
92
|
+
Multi-Tenancy
|
93
|
+
===========
|
94
|
+
|
95
|
+
KAUI has been enhanced to support multi-tenancy. In order to benefit from that mode, remove the properties `KillBillClient.api_key` and `KillBillClient.api_secret` from the config/initializers directory.
|
96
|
+
|
97
|
+
Admin User Roles
|
98
|
+
-------------------------
|
99
|
+
|
100
|
+
In multi-tenancy mode, there are two kind of users:
|
101
|
+
|
102
|
+
* The **multi-tenant admin** user, which has the rights to configure the tenant information (creation of tenant, add allowed users for specific tenant, upload catalog, ...)
|
103
|
+
* The **per-tenant admin** user, which operates just a given tenant
|
104
|
+
|
105
|
+
Those roles and permissions are defined the same way other permissions are defined: The Shiro configuration (static config file, LDAP) in Kill Bill, will determine for each user its associated role, and the roles will have a set of available [permissions](https://github.com/killbill/killbill-api/blob/master/src/main/java/org/killbill/billing/security/Permission.java). The new permissions have been created:
|
106
|
+
|
107
|
+
* TENANT_CAN_VIEW
|
108
|
+
* TENANT_CAN_CREATE
|
109
|
+
* OVERDUE_CAN_UPLOAD
|
110
|
+
* CATALOG_CAN_UPLOAD
|
111
|
+
|
112
|
+
The [enforcement in KAUI](https://github.com/killbill/killbill-admin-ui/blob/master/app/models/kaui/ability.rb) is based on the CanCan gem.
|
113
|
+
|
114
|
+
Multi-tenancy screens
|
115
|
+
------------------------------
|
116
|
+
|
117
|
+
KAUI has been enriched with new models and new screens to manage the multi-tenancy, and those are available for the multi-tenant admin user:
|
118
|
+
|
119
|
+
* The `kaui_tenants` table will list the available tenants (from KAUI point of view); note that this is redundant with the Kill Bill `tenants` table, and the reason is that the `api_secret` needs to maintained in KAUI as well, so listing the existing tenants from Kill Bill would not work since that key is encrypted and cannot be returned. A new screen mounted on `/admin_tenants` allows to configure new tenants. The view allows to create the new tenant in Kill Bill or simply updates the local KAUI config if the tenant already exists.
|
120
|
+
* The `kaui_allowed_users` table along with the join table `kaui_allowed_user_tenants` will list all the users in the system that can access specific tenants. The join table is required since a given user could access multiple tenants (e.g multi-tenant admin user), and at the same time many users could access the same tenant. A new screen mounted on `/admin_allowed_users` allows to configure the set of allowed users associated to specific tenants.
|
121
|
+
|
122
|
+
|
123
|
+
|
@@ -22,14 +22,22 @@ module Kaui
|
|
22
22
|
end
|
23
23
|
|
24
24
|
begin
|
25
|
-
# Create the tenant in Kill Bill
|
26
|
-
new_tenant = Kaui::AdminTenant.new
|
27
|
-
new_tenant.external_key = param_tenant[:name]
|
28
|
-
new_tenant.api_key = param_tenant[:api_key]
|
29
|
-
new_tenant.api_secret = param_tenant[:api_secret]
|
30
25
|
|
31
26
|
options = tenant_options_for_client
|
32
|
-
new_tenant =
|
27
|
+
new_tenant = nil
|
28
|
+
|
29
|
+
if params[:create_tenant]
|
30
|
+
# Create the tenant in Kill Bill
|
31
|
+
new_tenant = Kaui::AdminTenant.new
|
32
|
+
new_tenant.external_key = param_tenant[:name]
|
33
|
+
new_tenant.api_key = param_tenant[:api_key]
|
34
|
+
new_tenant.api_secret = param_tenant[:api_secret]
|
35
|
+
new_tenant = new_tenant.create(options[:username], nil, comment, options)
|
36
|
+
else
|
37
|
+
options[:api_key] = param_tenant[:api_key]
|
38
|
+
options[:api_secret] = param_tenant[:api_secret]
|
39
|
+
new_tenant = Kaui::AdminTenant.find_by_api_key(param_tenant[:api_key], options)
|
40
|
+
end
|
33
41
|
|
34
42
|
# Transform object to Kaui model
|
35
43
|
tenant_model = Kaui::Tenant.new
|
@@ -24,6 +24,13 @@
|
|
24
24
|
</div>
|
25
25
|
</div>
|
26
26
|
|
27
|
+
<div class="control-group">
|
28
|
+
<%= f.label :create_tenant, 'Create tenant', :class => 'control-label' %>
|
29
|
+
<div class="controls">
|
30
|
+
<%= check_box_tag(:create_tenant) %>
|
31
|
+
</div>
|
32
|
+
</div>
|
33
|
+
|
27
34
|
<div class="form-actions">
|
28
35
|
<%= button_tag 'Configure a new Tenant', :class => 'btn btn-primary' %>
|
29
36
|
</div>
|
data/kaui.gemspec
CHANGED
@@ -27,7 +27,7 @@ Gem::Specification.new do |s|
|
|
27
27
|
s.add_dependency 'money-rails', '~> 0.8.1'
|
28
28
|
s.add_dependency 'd3_rails', '~> 3.2.8'
|
29
29
|
s.add_dependency 'twitter-bootstrap-rails', '~> 2.2.8'
|
30
|
-
s.add_dependency 'killbill-client', '~> 0.10.
|
30
|
+
s.add_dependency 'killbill-client', '~> 0.10.4'
|
31
31
|
s.add_dependency 'devise', '~> 3.0.2'
|
32
32
|
s.add_dependency 'cancan', '~> 1.6.10'
|
33
33
|
s.add_dependency 'carmen-rails', '~> 1.0.0'
|
data/lib/kaui/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kaui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Killbill core team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -86,14 +86,14 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0.10.
|
89
|
+
version: 0.10.4
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 0.10.
|
96
|
+
version: 0.10.4
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: devise
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|