strongbolt 0.3.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.editorconfig +33 -0
- data/.gitignore +18 -0
- data/.rspec +1 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +130 -0
- data/LICENSE.txt +22 -0
- data/README.md +182 -0
- data/Rakefile +1 -0
- data/app/assets/javascripts/strongbolt.js +1 -0
- data/app/assets/javascripts/strongbolt/role-capabilities.js +80 -0
- data/app/controllers/strongbolt/capabilities_controller.rb +77 -0
- data/app/controllers/strongbolt/roles_controller.rb +92 -0
- data/app/controllers/strongbolt/security_controller.rb +8 -0
- data/app/controllers/strongbolt/user_groups_controller.rb +76 -0
- data/app/controllers/strongbolt/user_groups_users_controller.rb +35 -0
- data/app/controllers/strongbolt_controller.rb +2 -0
- data/app/views/strongbolt/_menu.html.erb +13 -0
- data/app/views/strongbolt/capabilities/index.html.erb +53 -0
- data/app/views/strongbolt/capabilities/show.html.erb +53 -0
- data/app/views/strongbolt/roles/_capabilities.html.erb +47 -0
- data/app/views/strongbolt/roles/_capability.html.erb +21 -0
- data/app/views/strongbolt/roles/_form.html.erb +12 -0
- data/app/views/strongbolt/roles/edit.html.erb +14 -0
- data/app/views/strongbolt/roles/index.html.erb +54 -0
- data/app/views/strongbolt/roles/new.html.erb +11 -0
- data/app/views/strongbolt/roles/show.html.erb +52 -0
- data/app/views/strongbolt/user_groups/_form.html.erb +12 -0
- data/app/views/strongbolt/user_groups/edit.html.erb +14 -0
- data/app/views/strongbolt/user_groups/index.html.erb +46 -0
- data/app/views/strongbolt/user_groups/new.html.erb +13 -0
- data/app/views/strongbolt/user_groups/show.html.erb +88 -0
- data/lib/generators/strongbolt/fix_generator.rb +23 -0
- data/lib/generators/strongbolt/indexes_generator.rb +19 -0
- data/lib/generators/strongbolt/install_generator.rb +29 -0
- data/lib/generators/strongbolt/templates/fix.rb +5 -0
- data/lib/generators/strongbolt/templates/indexes.rb +21 -0
- data/lib/generators/strongbolt/templates/migration.rb +73 -0
- data/lib/generators/strongbolt/templates/strongbolt.rb +45 -0
- data/lib/generators/strongbolt/views_generator.rb +26 -0
- data/lib/strongbolt.rb +219 -0
- data/lib/strongbolt/base.rb +7 -0
- data/lib/strongbolt/bolted.rb +125 -0
- data/lib/strongbolt/bolted_controller.rb +297 -0
- data/lib/strongbolt/capabilities_role.rb +15 -0
- data/lib/strongbolt/capability.rb +165 -0
- data/lib/strongbolt/configuration.rb +111 -0
- data/lib/strongbolt/controllers/url_helpers.rb +37 -0
- data/lib/strongbolt/engine.rb +44 -0
- data/lib/strongbolt/errors.rb +38 -0
- data/lib/strongbolt/generators/migration.rb +35 -0
- data/lib/strongbolt/helpers.rb +18 -0
- data/lib/strongbolt/rails/routes.rb +20 -0
- data/lib/strongbolt/role.rb +46 -0
- data/lib/strongbolt/roles_user_group.rb +15 -0
- data/lib/strongbolt/rspec.rb +29 -0
- data/lib/strongbolt/rspec/user.rb +90 -0
- data/lib/strongbolt/tenantable.rb +304 -0
- data/lib/strongbolt/user_abilities.rb +292 -0
- data/lib/strongbolt/user_group.rb +24 -0
- data/lib/strongbolt/user_groups_user.rb +16 -0
- data/lib/strongbolt/users_tenant.rb +12 -0
- data/lib/strongbolt/version.rb +3 -0
- data/lib/tasks/strongbolt_tasks.rake +29 -0
- data/spec/controllers/strongbolt/capabilities_controller_spec.rb +254 -0
- data/spec/controllers/strongbolt/roles_controller_spec.rb +228 -0
- data/spec/controllers/strongbolt/user_groups_controller_spec.rb +216 -0
- data/spec/controllers/strongbolt/user_groups_users_controller_spec.rb +69 -0
- data/spec/controllers/without_authorization_controller_spec.rb +20 -0
- data/spec/dummy/.rspec +2 -0
- data/spec/dummy/README.rdoc +28 -0
- data/spec/dummy/Rakefile +6 -0
- data/spec/dummy/app/assets/images/.keep +0 -0
- data/spec/dummy/app/assets/javascripts/application.js +13 -0
- data/spec/dummy/app/assets/stylesheets/application.css +15 -0
- data/spec/dummy/app/controllers/application_controller.rb +5 -0
- data/spec/dummy/app/controllers/concerns/.keep +0 -0
- data/spec/dummy/app/controllers/posts_controller.rb +18 -0
- data/spec/dummy/app/controllers/test_controller.rb +3 -0
- data/spec/dummy/app/controllers/without_authorization_controller.rb +5 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/mailers/.keep +0 -0
- data/spec/dummy/app/models/.keep +0 -0
- data/spec/dummy/app/models/concerns/.keep +0 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +29 -0
- data/spec/dummy/config/boot.rb +5 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +37 -0
- data/spec/dummy/config/environments/production.rb +78 -0
- data/spec/dummy/config/environments/test.rb +39 -0
- data/spec/dummy/config/initializers/assets.rb +8 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/mime_types.rb +4 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/strongbolt.rb +32 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +23 -0
- data/spec/dummy/config/routes.rb +12 -0
- data/spec/dummy/config/secrets.yml +22 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/migrate/20150630212236_create_strongbolt_tables.rb +54 -0
- data/spec/dummy/db/migrate/20150630212251_create_strongbolt_tables_indexes.rb +21 -0
- data/spec/dummy/db/schema.rb +84 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/lib/assets/.keep +0 -0
- data/spec/dummy/public/404.html +67 -0
- data/spec/dummy/public/422.html +67 -0
- data/spec/dummy/public/500.html +66 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/fabricators/capability_fabricator.rb +4 -0
- data/spec/fabricators/role_fabricator.rb +9 -0
- data/spec/fabricators/user_fabricator.rb +3 -0
- data/spec/fabricators/user_group_fabricator.rb +9 -0
- data/spec/fixtures/application.rb +28 -0
- data/spec/fixtures/controllers.rb +5 -0
- data/spec/spec_helper.rb +89 -0
- data/spec/strongbolt/bolted_controller_spec.rb +706 -0
- data/spec/strongbolt/bolted_spec.rb +136 -0
- data/spec/strongbolt/capability_spec.rb +251 -0
- data/spec/strongbolt/configuration_spec.rb +119 -0
- data/spec/strongbolt/controllers/url_helpers_spec.rb +34 -0
- data/spec/strongbolt/helpers_spec.rb +43 -0
- data/spec/strongbolt/role_spec.rb +90 -0
- data/spec/strongbolt/tenantable_spec.rb +281 -0
- data/spec/strongbolt/user_abilities_spec.rb +509 -0
- data/spec/strongbolt/user_group_spec.rb +37 -0
- data/spec/strongbolt/users_tenant_spec.rb +36 -0
- data/spec/strongbolt_spec.rb +274 -0
- data/spec/support/controller_macros.rb +11 -0
- data/spec/support/db_setup.rb +134 -0
- data/spec/support/helpers.rb +62 -0
- data/spec/support/transactional_specs.rb +17 -0
- data/strongbolt.gemspec +32 -0
- metadata +407 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
<div class="btn-group"
|
2
|
+
data-model="<%= key[:model] %>"
|
3
|
+
data-require-ownership=<%= key[:require_ownership] %>
|
4
|
+
data-require-tenant-access=<%= key[:require_tenant_access] %>>
|
5
|
+
|
6
|
+
<% Capability::Actions.each do |action| %>
|
7
|
+
<% if inherited_capability[action.to_sym] %>
|
8
|
+
<button type="button" disabled class="btn btn-xs btn-success" title="Inherited">
|
9
|
+
<%= action.capitalize %>
|
10
|
+
</button>
|
11
|
+
<% else %>
|
12
|
+
<button type="button"
|
13
|
+
data-action="<%= action %>"
|
14
|
+
data-granted="<%= capability[action.to_sym] %>"
|
15
|
+
class="btn btn-xs <%= capability[action.to_sym] ? "btn-success" : "btn-danger" %>">
|
16
|
+
<%= action.capitalize %>
|
17
|
+
</button>
|
18
|
+
<% end %>
|
19
|
+
<% end %>
|
20
|
+
|
21
|
+
</div>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<%= simple_form_for(@role,
|
2
|
+
as: "role",
|
3
|
+
url: params[:action].to_sym == :new ? roles_path : role_path(@role),
|
4
|
+
method: params[:action].to_sym == :new ? :post : :put) do |f| %>
|
5
|
+
|
6
|
+
<%= f.input :name %>
|
7
|
+
<%= f.input :parent_id, collection: Role.where.not(id: @role.id).order('parent_id IS NOT NULL', :parent_id, :name) %>
|
8
|
+
<%= f.input :description %>
|
9
|
+
|
10
|
+
<%= f.button :wrapped, class: 'btn-primary', value: 'Save' %>
|
11
|
+
|
12
|
+
<% end %>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<%= render 'strongbolt/menu', current: 'roles' %>
|
2
|
+
|
3
|
+
<ul class='breadcrumb'>
|
4
|
+
<h2 style='text-align:left'>Security: Role <em><%= @role.name %></em></h2>
|
5
|
+
<li>
|
6
|
+
<%= link_to "Roles", roles_path %>
|
7
|
+
</li>
|
8
|
+
<li>
|
9
|
+
<%= link_to @role.name, role_path(@role) %>
|
10
|
+
</li>
|
11
|
+
<li class='active'>Edit</li>
|
12
|
+
</ul>
|
13
|
+
|
14
|
+
<%= render 'form' %>
|
@@ -0,0 +1,54 @@
|
|
1
|
+
<%= render 'strongbolt/menu', current: 'roles' %>
|
2
|
+
|
3
|
+
<ul class='breadcrumb'>
|
4
|
+
<h2 style='text-align:left'>Security: Roles</h2>
|
5
|
+
<li>Roles</li>
|
6
|
+
</ul>
|
7
|
+
|
8
|
+
<div class="pull-right">
|
9
|
+
<%= link_to "New Role", new_role_path, class: 'btn btn-default' %>
|
10
|
+
</div>
|
11
|
+
<div class="clearfix"></div>
|
12
|
+
|
13
|
+
<table class="table table-striped table-summary">
|
14
|
+
|
15
|
+
<thead>
|
16
|
+
<tr>
|
17
|
+
<th>Name</th>
|
18
|
+
<th>Inherits from</th>
|
19
|
+
<th>Description</th>
|
20
|
+
<th>Permissions</th>
|
21
|
+
<th>User Groups</th>
|
22
|
+
<th></th>
|
23
|
+
</tr>
|
24
|
+
</thead>
|
25
|
+
|
26
|
+
<tbody>
|
27
|
+
|
28
|
+
<% @roles.each do |role| %>
|
29
|
+
|
30
|
+
<tr>
|
31
|
+
<td><%= link_to role.name, role_path(role) %></td>
|
32
|
+
<td>
|
33
|
+
<% if role.parent.present? %>
|
34
|
+
<%= link_to role.parent.name, role_path(role.parent) %>
|
35
|
+
<% end %>
|
36
|
+
</td>
|
37
|
+
<td><%= role.description %></td>
|
38
|
+
<td><%= role.capabilities.size %></td>
|
39
|
+
<td><%= role.user_groups.size %></td>
|
40
|
+
<td align="right">
|
41
|
+
<%= link_to edit_role_path(role) do %>
|
42
|
+
<i class="fa fa-pencil"></i>
|
43
|
+
<% end %>
|
44
|
+
<%= link_to role_path(role), method: :delete, data: { confirm: "Do you confirm deleting #{role.name}?" }, class: "text-danger" do %>
|
45
|
+
<i class="fa fa-trash-o"></i>
|
46
|
+
<% end %>
|
47
|
+
</td>
|
48
|
+
</tr>
|
49
|
+
|
50
|
+
<% end %>
|
51
|
+
|
52
|
+
</tbody>
|
53
|
+
|
54
|
+
</table>
|
@@ -0,0 +1,52 @@
|
|
1
|
+
<%= render 'strongbolt/menu', current: 'roles' %>
|
2
|
+
|
3
|
+
<ul class='breadcrumb'>
|
4
|
+
<h2 style='text-align:left'>Security: Role <em><%= @role.name %></em></h2>
|
5
|
+
<li>
|
6
|
+
<%= link_to "Roles", roles_path %>
|
7
|
+
</li>
|
8
|
+
<li class='active'><%= @role.name %></li>
|
9
|
+
</ul>
|
10
|
+
|
11
|
+
<div class="pull-right">
|
12
|
+
<%= link_to "Edit", edit_role_path(@role), :class => "btn btn-default" %>
|
13
|
+
<%= link_to "Delete", role_path(@role), :class => "btn btn-danger", method: :delete, :data => {:confirm => "Do you confirm deleting #{@role.name}"} %>
|
14
|
+
</div>
|
15
|
+
|
16
|
+
<p><%= @role.description %></p>
|
17
|
+
|
18
|
+
<% if @role.parent.present? %>
|
19
|
+
<p>Inherits from: <%= link_to @role.parent.name, role_path(@role.parent) %></p>
|
20
|
+
<% end %>
|
21
|
+
|
22
|
+
<h3>User Groups</h3>
|
23
|
+
|
24
|
+
<table class="table table-condensed table-summary table-without-thead">
|
25
|
+
<% @role.user_groups.each do |user_group| %>
|
26
|
+
<tr>
|
27
|
+
<td>
|
28
|
+
<%= link_to user_group.name, user_group_path(user_group) %>
|
29
|
+
</td>
|
30
|
+
<td><%= user_group.description %></td>
|
31
|
+
<td><%= user_group.users.size %> users</td>
|
32
|
+
</tr>
|
33
|
+
<% end %>
|
34
|
+
</table>
|
35
|
+
|
36
|
+
<% if @descendants.size > 0 %>
|
37
|
+
<h3>Inherited by</h3>
|
38
|
+
|
39
|
+
<table class="table table-condensed table-summary table-without-thead">
|
40
|
+
<% @descendants.each do |descendant| %>
|
41
|
+
<tr>
|
42
|
+
<td><%= link_to descendant.name, role_path(descendant) %></td>
|
43
|
+
<td><%= descendant.description %></td>
|
44
|
+
<td><%= descendant.user_groups.size %> user groups</td>
|
45
|
+
<tr>
|
46
|
+
<% end %>
|
47
|
+
</table>
|
48
|
+
<% end %>
|
49
|
+
|
50
|
+
<h3>Permissions</h3>
|
51
|
+
|
52
|
+
<%= render 'capabilities' %>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<%= simple_form_for(@user_group,
|
2
|
+
as: "user_group",
|
3
|
+
url: params[:action].to_sym == :new ? user_groups_path : user_group_path(@user_group),
|
4
|
+
method: params[:action].to_sym == :new ? :post : :put) do |f| %>
|
5
|
+
|
6
|
+
<%= f.input :name %>
|
7
|
+
<%= f.input :description %>
|
8
|
+
|
9
|
+
<%= f.association :roles, as: :check_boxes %>
|
10
|
+
|
11
|
+
<%= f.button :wrapped, class: 'btn-primary', value: 'Save' %>
|
12
|
+
<% end %>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<%= render 'strongbolt/menu', current: 'user_groups' %>
|
2
|
+
|
3
|
+
<ul class='breadcrumb'>
|
4
|
+
<h2 style='text-align:left'>Security: User Group <em><%= @user_group.name %></em></h2>
|
5
|
+
<li>
|
6
|
+
<%= link_to "User Groups", user_groups_path %>
|
7
|
+
</li>
|
8
|
+
<li>
|
9
|
+
<%= link_to @user_group.name, user_group_path(@user_group) %>
|
10
|
+
</li>
|
11
|
+
<li class="active">Edit</li>
|
12
|
+
</ul>
|
13
|
+
|
14
|
+
<%= render 'form'%>
|
@@ -0,0 +1,46 @@
|
|
1
|
+
<%= render 'strongbolt/menu', current: 'user_groups' %>
|
2
|
+
|
3
|
+
<ul class='breadcrumb'>
|
4
|
+
<h2 style='text-align:left'>Security: User Groups</h2>
|
5
|
+
<li class='active'>User Groups</li>
|
6
|
+
</ul>
|
7
|
+
|
8
|
+
<div class="pull-right">
|
9
|
+
<%= link_to "New User Group", new_user_group_path, class: "btn btn-default" %>
|
10
|
+
</div>
|
11
|
+
<div class="clearfix"></div>
|
12
|
+
|
13
|
+
<table class="table table-summary table-striped">
|
14
|
+
<thead>
|
15
|
+
<tr>
|
16
|
+
<th>Name</th>
|
17
|
+
<th>Description</th>
|
18
|
+
<th>Roles</th>
|
19
|
+
<th>Users</th>
|
20
|
+
<th></th>
|
21
|
+
</tr>
|
22
|
+
</thead>
|
23
|
+
|
24
|
+
<tbody>
|
25
|
+
<% @user_groups.each do |user_group| %>
|
26
|
+
|
27
|
+
<tr>
|
28
|
+
<td>
|
29
|
+
<%= link_to user_group.name, user_group_path(user_group) %>
|
30
|
+
</td>
|
31
|
+
<td><%= user_group.description %></td>
|
32
|
+
<td><%= user_group.roles.size %></td>
|
33
|
+
<td><%= user_group.users.size %></td>
|
34
|
+
<td align="right">
|
35
|
+
<%= link_to edit_user_group_path(user_group) do %>
|
36
|
+
<i class="fa fa-pencil"></i>
|
37
|
+
<% end %>
|
38
|
+
<%= link_to user_group_path(user_group), method: :delete, data: { confirm: "Do you confirm deleting #{user_group.name}?" }, class: "text-danger" do %>
|
39
|
+
<i class="fa fa-trash-o"></i>
|
40
|
+
<% end %>
|
41
|
+
</td>
|
42
|
+
</tr>
|
43
|
+
|
44
|
+
<% end %>
|
45
|
+
</tbody>
|
46
|
+
</table>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<%= render 'strongbolt/menu', current: 'user_groups' %>
|
2
|
+
|
3
|
+
<ul class='breadcrumb'>
|
4
|
+
<h2 style='text-align:left'>Security: New User Group</h2>
|
5
|
+
<li>
|
6
|
+
<%= link_to "User Groups", user_groups_path %>
|
7
|
+
</li>
|
8
|
+
<li class='active'>
|
9
|
+
New
|
10
|
+
</li>
|
11
|
+
</ul>
|
12
|
+
|
13
|
+
<%= render 'form' %>
|
@@ -0,0 +1,88 @@
|
|
1
|
+
<%= render 'strongbolt/menu', current: 'user_groups' %>
|
2
|
+
|
3
|
+
<ul class='breadcrumb'>
|
4
|
+
<h2 style='text-align:left'>Security: User Group <em><%= @user_group.name %></em></h2>
|
5
|
+
<li>
|
6
|
+
<%= link_to "User Groups", user_groups_path %>
|
7
|
+
</li>
|
8
|
+
<li class='active'>
|
9
|
+
<%= @user_group.name %>
|
10
|
+
</li>
|
11
|
+
</ul>
|
12
|
+
|
13
|
+
<p>
|
14
|
+
<%= @user_group.description %>
|
15
|
+
</p>
|
16
|
+
|
17
|
+
<div class="pull-right">
|
18
|
+
<%= link_to "Edit", edit_user_group_path(@user_group), :class => "btn btn-default" %>
|
19
|
+
<%= link_to "Delete", user_group_path(@user_group), :class => "btn btn-danger", method: :delete, :data => {:confirm => "Do you confirm deleting #{@user_group.name}"} %>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<h3>Roles</h3>
|
23
|
+
|
24
|
+
<table class="table table-summary table-condensed table-without-thead">
|
25
|
+
<tbody>
|
26
|
+
<% @user_group.roles.each do |role| %>
|
27
|
+
|
28
|
+
<tr>
|
29
|
+
<td><%= link_to role.name, role_path(role) %></td>
|
30
|
+
<td><%= role.description %></td>
|
31
|
+
<td><%= role.capabilities.size %> permissions</td>
|
32
|
+
</tr>
|
33
|
+
|
34
|
+
<% end %>
|
35
|
+
</tbody>
|
36
|
+
</table>
|
37
|
+
|
38
|
+
<h3>Users</h3>
|
39
|
+
|
40
|
+
<table class="table table-summary table-striped">
|
41
|
+
<thead>
|
42
|
+
<tr>
|
43
|
+
<th>Email</th>
|
44
|
+
<th>Sign Up Date</th>
|
45
|
+
<th></th>
|
46
|
+
</tr>
|
47
|
+
</thead>
|
48
|
+
|
49
|
+
<tbody>
|
50
|
+
<% @user_group.users.order(:email).each do |user| %>
|
51
|
+
|
52
|
+
<tr>
|
53
|
+
<td><%= user.email %></td>
|
54
|
+
<td><%= l user.created_at %></td>
|
55
|
+
<td align="right">
|
56
|
+
<%= link_to(user_group_user_path(@user_group, user), method: :delete, class: 'text-danger') do %>
|
57
|
+
<i class="fa fa-times"></i>
|
58
|
+
<% end %>
|
59
|
+
</td>
|
60
|
+
</tr>
|
61
|
+
|
62
|
+
<% end %>
|
63
|
+
</tbody>
|
64
|
+
</table>
|
65
|
+
|
66
|
+
|
67
|
+
<%= form_tag user_group_users_path(@user_group) do %>
|
68
|
+
|
69
|
+
<div class="row">
|
70
|
+
<div class="col-sm-8">
|
71
|
+
<%= select_tag :id, options_for_select(@users.pluck(:email, :id)), :class => "form-control", :prompt => "Select an user..." %>
|
72
|
+
</div>
|
73
|
+
<div class="spacer visible-xs"></div>
|
74
|
+
<div class="col-sm-4">
|
75
|
+
<%= submit_tag "Add user", class: "btn btn-block btn-primary" %>
|
76
|
+
</div>
|
77
|
+
</div>
|
78
|
+
|
79
|
+
<div class="spacer"></div>
|
80
|
+
|
81
|
+
<% end %>
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require "strongbolt/generators/migration"
|
2
|
+
|
3
|
+
module Strongbolt
|
4
|
+
module Generators
|
5
|
+
#
|
6
|
+
# Creates a migration to fix a has many through with users tenants problem
|
7
|
+
#
|
8
|
+
class FixGenerator < Rails::Generators::Base
|
9
|
+
include Strongbolt::Generators::Migration
|
10
|
+
|
11
|
+
source_root File.expand_path('../templates', __FILE__)
|
12
|
+
|
13
|
+
def copy_fix
|
14
|
+
unless Strongbolt::UsersTenant.primary_key.nil?
|
15
|
+
puts"Strongbolt::UsersTenant already has a primary key, no need to use the fix"
|
16
|
+
else
|
17
|
+
copy_migration "fix", "fix_strongbolt_users_tenants_id"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require "strongbolt/generators/migration"
|
2
|
+
|
3
|
+
module Strongbolt
|
4
|
+
module Generators
|
5
|
+
#
|
6
|
+
# Creates a migration to fix a has many through with users tenants problem
|
7
|
+
#
|
8
|
+
class IndexesGenerator < Rails::Generators::Base
|
9
|
+
include Strongbolt::Generators::Migration
|
10
|
+
|
11
|
+
source_root File.expand_path('../templates', __FILE__)
|
12
|
+
|
13
|
+
def copy_fix
|
14
|
+
copy_migration "indexes", "create_strongbolt_tables_indexes"
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require "strongbolt/generators/migration"
|
2
|
+
|
3
|
+
module Strongbolt
|
4
|
+
module Generators
|
5
|
+
class InstallGenerator < Rails::Generators::Base
|
6
|
+
include Strongbolt::Generators::Migration
|
7
|
+
|
8
|
+
source_root File.expand_path('../templates', __FILE__)
|
9
|
+
|
10
|
+
def copy_migrations
|
11
|
+
copy_migration "migration", "create_strongbolt_tables"
|
12
|
+
end
|
13
|
+
|
14
|
+
def copy_initializer
|
15
|
+
# Laods all the application models
|
16
|
+
Rails.application.eager_load!
|
17
|
+
# Copy the file
|
18
|
+
copy_file "strongbolt.rb", "config/initializers/strongbolt.rb"
|
19
|
+
# Fill in the list of models of the application
|
20
|
+
gsub_file "config/initializers/strongbolt.rb", '%MODELS%',
|
21
|
+
ActiveRecord::Base.descendants
|
22
|
+
.reject { |m| m.name =~ /^Strongbolt::/ }
|
23
|
+
.map { |m| "'#{m.name}'" }
|
24
|
+
.join(", ")
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class CreateStrongboltTablesIndexes < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
add_index :strongbolt_roles, :parent_id
|
4
|
+
add_index :strongbolt_roles, :lft
|
5
|
+
add_index :strongbolt_roles, :rgt
|
6
|
+
|
7
|
+
add_index :strongbolt_user_groups_users, :user_group_id
|
8
|
+
add_index :strongbolt_user_groups_users, :user_id
|
9
|
+
|
10
|
+
add_index :strongbolt_roles_user_groups, :user_group_id
|
11
|
+
add_index :strongbolt_roles_user_groups, :role_id
|
12
|
+
|
13
|
+
add_index :strongbolt_capabilities_roles, :role_id
|
14
|
+
add_index :strongbolt_capabilities_roles, :capability_id
|
15
|
+
|
16
|
+
add_index :strongbolt_users_tenants, :user_id
|
17
|
+
add_index :strongbolt_users_tenants, :tenant_id
|
18
|
+
add_index :strongbolt_users_tenants, :type
|
19
|
+
add_index :strongbolt_users_tenants, [:tenant_id, :type]
|
20
|
+
end
|
21
|
+
end
|