rails_app_generator 0.2.28 → 0.2.29
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/CHANGELOG.md +7 -0
- data/after_templates/addons/rolify/_.rb +45 -0
- data/after_templates/addons/rolify/app/controllers/home_controller.rb +35 -0
- data/after_templates/addons/rolify/app/controllers/rolify_controller.rb +26 -0
- data/after_templates/addons/rolify/app/models/post.rb +3 -0
- data/after_templates/addons/rolify/app/models/user.rb +25 -0
- data/after_templates/addons/rolify/app/views/home/_roles.html.erb +5 -0
- data/after_templates/addons/rolify/app/views/home/bossy_boots.html.erb +5 -0
- data/after_templates/addons/rolify/app/views/home/index.html.erb +37 -0
- data/after_templates/addons/rolify/app/views/home/super_hero.html.erb +5 -0
- data/after_templates/addons/rolify/app/views/home/use_in_moderation.html.erb +5 -0
- data/after_templates/addons/rolify/app/views/home/use_me.html.erb +5 -0
- data/after_templates/addons/rolify/app/views/layouts/_footer.html.erb +1 -0
- data/after_templates/addons/rolify/app/views/layouts/_navbar.html.erb +18 -0
- data/after_templates/addons/rolify/app/views/layouts/application.html.erb +52 -0
- data/after_templates/addons/rolify/app/views/rolify/_form.html.erb +61 -0
- data/after_templates/addons/rolify/app/views/rolify/_user.html.erb +34 -0
- data/after_templates/addons/rolify/app/views/rolify/edit.html.erb +4 -0
- data/after_templates/addons/rolify/app/views/rolify/show.html.erb +5 -0
- data/after_templates/addons/rolify/db/seeds.rb +19 -0
- data/docs/last_run/app_generator_class.json +8 -0
- data/docs/last_run/app_generator_data.json +4 -3
- data/docs/last_run/rails_options_class.json +8 -0
- data/docs/last_run/rails_options_data.json +4 -3
- data/lib/rails_app_generator/addons/devise.rb +12 -3
- data/lib/rails_app_generator/addons/rolify.rb +3 -22
- data/lib/rails_app_generator/version.rb +1 -1
- data/package-lock.json +2 -2
- data/package.json +1 -1
- data/profiles/addons/rolify.json +17 -0
- metadata +22 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9814e53f17fa635ed1ab01effbdc7b434ccac9c09c8b4f3b25f2bd75c905bc34
|
4
|
+
data.tar.gz: 2986a8435c7bac002667d0826759ca8d480ac9b6f3397c717166eb08cc2ef84f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1299bd5a332ca9b2a8b9cefcbb51ea4338f5fefbb52f2c872429dee01ec6a94bb8d1838fe20c8ab6d3a2fcbd44e00b3f09e76abb28528a9f9944598d0c068c7e
|
7
|
+
data.tar.gz: bac96b22350786b254f9f5c713736ce9394462bc9caa22d64e5490a892f40122b5fd8b2c3c7f6fa5058eafc5b80ce07b30c2297ba62d389d7b7b2682beba8892
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
## [0.2.28](https://github.com/klueless-io/rails_app_generator/compare/v0.2.27...v0.2.28) (2022-08-17)
|
2
|
+
|
3
|
+
|
4
|
+
### Bug Fixes
|
5
|
+
|
6
|
+
* add rolify addon ([804ecf1](https://github.com/klueless-io/rails_app_generator/commit/804ecf1ba1fe1a56512b6d335a77558b0da3ad97))
|
7
|
+
|
1
8
|
## [0.2.27](https://github.com/klueless-io/rails_app_generator/compare/v0.2.26...v0.2.27) (2022-08-17)
|
2
9
|
|
3
10
|
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Role management library with resource scoping
|
4
|
+
#
|
5
|
+
# exe/rag addons/rolify
|
6
|
+
|
7
|
+
self.local_template_path = File.dirname(__FILE__)
|
8
|
+
|
9
|
+
gac 'base rails 7 image created'
|
10
|
+
|
11
|
+
prepare_environment
|
12
|
+
|
13
|
+
after_bundle do
|
14
|
+
scaffolds
|
15
|
+
setup_customizations
|
16
|
+
setup_db
|
17
|
+
end
|
18
|
+
|
19
|
+
def scaffolds
|
20
|
+
add_scaffold('post', 'title', 'body:text')
|
21
|
+
end
|
22
|
+
|
23
|
+
def setup_customizations
|
24
|
+
route("root 'home#index'")
|
25
|
+
route("get 'home/quick_sign_in/:user_id', to: 'home#quick_sign_in', as: 'quick_sign_in'")
|
26
|
+
route("get 'rolify/:id', to: 'rolify#show', as: 'rolify'")
|
27
|
+
route("get 'rolify/:id/edit', to: 'rolify#edit', as: 'edit_rolify'")
|
28
|
+
route("patch 'rolify/:id', to: 'rolify#update'")
|
29
|
+
|
30
|
+
force_copy
|
31
|
+
|
32
|
+
add_controller('home', 'index', 'quick_sign_in', 'bossy_boots', 'use_in_moderation', 'use_me', 'super_hero')
|
33
|
+
|
34
|
+
directory "app/controllers"
|
35
|
+
directory "app/models"
|
36
|
+
directory "app/views"
|
37
|
+
template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
|
38
|
+
end
|
39
|
+
|
40
|
+
def setup_db
|
41
|
+
template 'db/seeds.rb' , 'db/seeds.rb'
|
42
|
+
|
43
|
+
db_migrate
|
44
|
+
db_seed
|
45
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
class HomeController < ApplicationController
|
2
|
+
before_action :require_permission, except: %i[index quick_sign_in]
|
3
|
+
|
4
|
+
def index
|
5
|
+
end
|
6
|
+
|
7
|
+
def quick_sign_in
|
8
|
+
user = User.find(params[:user_id])
|
9
|
+
sign_in(user)
|
10
|
+
redirect_to root_path
|
11
|
+
end
|
12
|
+
|
13
|
+
def bossy_boots
|
14
|
+
end
|
15
|
+
|
16
|
+
def use_in_moderation
|
17
|
+
end
|
18
|
+
|
19
|
+
def use_me
|
20
|
+
end
|
21
|
+
|
22
|
+
def super_hero
|
23
|
+
end
|
24
|
+
|
25
|
+
def require_permission
|
26
|
+
return if current_user&.is_super_user?
|
27
|
+
return if current_user&.is_admin? && action_name == "bossy_boots"
|
28
|
+
return if current_user&.is_moderator? && action_name == "use_in_moderation"
|
29
|
+
return if current_user&.is_user? && action_name == "use_me"
|
30
|
+
|
31
|
+
flash.alert = "You do not have permission to access #{action_name.titleize}"
|
32
|
+
|
33
|
+
redirect_to root_path
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
class RolifyController < ApplicationController
|
2
|
+
before_action :set_user, only: %i[ show edit update ]
|
3
|
+
|
4
|
+
def show
|
5
|
+
end
|
6
|
+
|
7
|
+
def edit
|
8
|
+
end
|
9
|
+
|
10
|
+
def update
|
11
|
+
if @user.update(user_params)
|
12
|
+
redirect_to root_path, notice: "User was successfully updated."
|
13
|
+
else
|
14
|
+
render :edit, status: :unprocessable_entity
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
def set_user
|
20
|
+
@user = User.find(params[:id])
|
21
|
+
end
|
22
|
+
|
23
|
+
def user_params
|
24
|
+
params.require(:user).permit(role_ids: [])
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class User < ApplicationRecord
|
2
|
+
# Rolify needs to be called before assigning default role due to a bug in Rolify
|
3
|
+
# see: https://github.com/RolifyCommunity/rolify/issues/518#issuecomment-1218705389
|
4
|
+
rolify
|
5
|
+
|
6
|
+
after_create :assign_default_role
|
7
|
+
|
8
|
+
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable
|
9
|
+
|
10
|
+
validate :must_have_role, on: :update
|
11
|
+
|
12
|
+
def assign_default_role
|
13
|
+
self.add_role(:user) if self.roles.blank?
|
14
|
+
end
|
15
|
+
|
16
|
+
def role_names
|
17
|
+
roles.distinct.pluck(:name)
|
18
|
+
end
|
19
|
+
|
20
|
+
def must_have_role
|
21
|
+
if self.roles.blank?
|
22
|
+
errors.add(:roles, "User must have at least one role")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
<h1>Rolify</h1>
|
2
|
+
|
3
|
+
<h4>Role management library with resource scoping</h4>
|
4
|
+
|
5
|
+
<ul>
|
6
|
+
<li>Role <b>admin</b>, can access <b>Bossy Boots</b></li>
|
7
|
+
<li>Role <b>moderator</b>, can access <b>Use in moderation</b></li>
|
8
|
+
<li>Role <b>user</b>, can access <b>Use Me</b></li>
|
9
|
+
<li>Role <b>super_user</b>, can access <b>every thing</b></li>
|
10
|
+
</ul>
|
11
|
+
|
12
|
+
<h3>Sample users and passwords</h3>
|
13
|
+
|
14
|
+
<table style='width: 800px;'>
|
15
|
+
<tr>
|
16
|
+
<th>Name</th>
|
17
|
+
<th>Email</th>
|
18
|
+
<th>Roles</th>
|
19
|
+
<th>Be who you wanna be</th>
|
20
|
+
<th>Manage Roles</th>
|
21
|
+
</tr>
|
22
|
+
<% User.all.each do |user| %>
|
23
|
+
<tr>
|
24
|
+
<td><%= user.name %></td>
|
25
|
+
<td><%= user.email %></td>
|
26
|
+
<td>
|
27
|
+
<ul style='list-style-type: none; padding: 2px; margin: 0px'>
|
28
|
+
<% user.role_names.each do |role| %>
|
29
|
+
<li><%= role %></li>
|
30
|
+
<% end %>
|
31
|
+
</ul>
|
32
|
+
</td>
|
33
|
+
<td><%= link_to "Sign In", quick_sign_in_path(user) %></td>
|
34
|
+
<td><%= link_to "Manage", edit_rolify_path(user) %></td>
|
35
|
+
</tr>
|
36
|
+
<% end %>
|
37
|
+
</table>
|
@@ -0,0 +1 @@
|
|
1
|
+
<hr />
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<%= link_to 'Home', root_path %>
|
2
|
+
| <%= link_to 'Posts', posts_path %>
|
3
|
+
[ <%= link_to 'Bossy Boots', home_bossy_boots_path, class: current_user&.is_super_user? || current_user&.is_admin? ? "has-role" : "has-no-role" %>
|
4
|
+
| <%= link_to 'Use in Moderation', home_use_in_moderation_path, class: current_user&.is_super_user? || current_user&.is_moderator? ? "has-role" : "has-no-role" %>
|
5
|
+
| <%= link_to 'Use Me', home_use_me_path, class: current_user&.is_super_user? || current_user&.is_user? ? "has-role" : "has-no-role" %>
|
6
|
+
| <%= link_to 'I will be your Hero', home_super_hero_path, class: current_user&.is_super_user? ? "has-role" : "has-no-role" %>
|
7
|
+
]
|
8
|
+
<br>
|
9
|
+
<% if current_user %>
|
10
|
+
<%= current_user.name.capitalize %>
|
11
|
+
<%= link_to "Edit Roles", edit_rolify_path(current_user) %>
|
12
|
+
<% if current_user.roles.present? %><%= "(#{current_user.roles.map(&:name).join(', ')})" %><% end %>
|
13
|
+
| <%= link_to 'Sign Out', destroy_user_session_path, data: { turbo_method: :delete } %>
|
14
|
+
|
15
|
+
<% else %>
|
16
|
+
| <%= link_to 'Sign Up', new_user_registration_path %>
|
17
|
+
| <%= link_to 'Sign In', new_user_session_path %>
|
18
|
+
<% end%>
|
@@ -0,0 +1,52 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title><%= camelized %></title>
|
5
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
6
|
+
<%%= csrf_meta_tags %>
|
7
|
+
<%%= csp_meta_tag %>
|
8
|
+
|
9
|
+
<%- if options[:skip_hotwire] || options[:skip_javascript] -%>
|
10
|
+
<%%= stylesheet_link_tag "application" %>
|
11
|
+
<%- else -%>
|
12
|
+
<%%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
|
13
|
+
<%- end -%>
|
14
|
+
<%%= javascript_include_tag "application", "data-turbo-track": "reload", defer: true %>
|
15
|
+
<style>
|
16
|
+
.notice {
|
17
|
+
color: green;
|
18
|
+
}
|
19
|
+
.alert {
|
20
|
+
color: red;
|
21
|
+
}
|
22
|
+
table {
|
23
|
+
border-collapse: collapse;
|
24
|
+
}
|
25
|
+
th, td {
|
26
|
+
border: 1px solid #ccc;
|
27
|
+
padding: 5px;
|
28
|
+
}
|
29
|
+
.has-role {
|
30
|
+
color: green;
|
31
|
+
}
|
32
|
+
.has-no-role {
|
33
|
+
color: grey;
|
34
|
+
}
|
35
|
+
</style>
|
36
|
+
</head>
|
37
|
+
|
38
|
+
<body>
|
39
|
+
<header>
|
40
|
+
<%%= render 'layouts/navbar' %>
|
41
|
+
<hr />
|
42
|
+
<%%= render 'layouts/alerts' %>
|
43
|
+
</header>
|
44
|
+
<main>
|
45
|
+
<%%= yield %>
|
46
|
+
</main>
|
47
|
+
<footer>
|
48
|
+
<%%= render 'layouts/footer' %>
|
49
|
+
</footer>
|
50
|
+
</body>
|
51
|
+
</html>
|
52
|
+
|
@@ -0,0 +1,61 @@
|
|
1
|
+
<%# , url: { controller: "rolify", action: "update" }, html: { :turbo_method => :post } %>
|
2
|
+
<%= form_with(model: user, url: rolify_path(user)) do |form| %>
|
3
|
+
|
4
|
+
<% if user.errors.any? %>
|
5
|
+
<div style="color: red">
|
6
|
+
<h2><%= pluralize(user.errors.count, "error") %> prohibited this user from being saved:</h2>
|
7
|
+
|
8
|
+
<ul>
|
9
|
+
<% user.errors.each do |error| %>
|
10
|
+
<li><%= error.full_message %></li>
|
11
|
+
<% end %>
|
12
|
+
</ul>
|
13
|
+
</div>
|
14
|
+
<% end %>
|
15
|
+
|
16
|
+
<p>
|
17
|
+
<strong>Name:</strong>
|
18
|
+
<%= user.name %>
|
19
|
+
</p>
|
20
|
+
|
21
|
+
<p>
|
22
|
+
<strong>Email:</strong>
|
23
|
+
<%= user.email %>
|
24
|
+
</p>
|
25
|
+
|
26
|
+
<p>
|
27
|
+
<%= form.label :current_roles, style: "display: block" %>
|
28
|
+
<%= user.roles.where(resource_type: nil).map { |role| role.name.capitalize }.to_sentence %>
|
29
|
+
</p>
|
30
|
+
|
31
|
+
<div>
|
32
|
+
<%= form.label :raw_roles, style: "display: block" %>
|
33
|
+
<pre>
|
34
|
+
<code>
|
35
|
+
<% user.roles.each do |role| %>
|
36
|
+
<%=
|
37
|
+
extra_info = if role.resource_type
|
38
|
+
" (#{role.resource_type}: #{role.resource_id})"
|
39
|
+
else
|
40
|
+
""
|
41
|
+
end
|
42
|
+
"#{role.id} - #{role.name}, #{extra_info}"
|
43
|
+
%>
|
44
|
+
<% end %>
|
45
|
+
</code>
|
46
|
+
</pre>
|
47
|
+
</div>
|
48
|
+
|
49
|
+
<div>
|
50
|
+
<%= form.label :user_roles, style: "display: block" %>
|
51
|
+
<% Role.where(resource_type: nil).each do |role| %>
|
52
|
+
<%= form.check_box :role_ids, { multiple: true, checked: user.role_ids.include?(role.id) }, role.id, nil %>
|
53
|
+
<%= role.name %><br />
|
54
|
+
<% end %>
|
55
|
+
</ul>
|
56
|
+
</div>
|
57
|
+
|
58
|
+
<div>
|
59
|
+
<%= form.submit %>
|
60
|
+
</div>
|
61
|
+
<% end %>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<div id="<%= dom_id user %>">
|
2
|
+
<p>
|
3
|
+
<strong>Name:</strong>
|
4
|
+
<%= user.name %>
|
5
|
+
</p>
|
6
|
+
|
7
|
+
<p>
|
8
|
+
<strong>Email:</strong>
|
9
|
+
<%= user.email %>
|
10
|
+
</p>
|
11
|
+
|
12
|
+
<div>
|
13
|
+
<strong>Current Roles:</strong>
|
14
|
+
<%= user.roles.where(resource_type: nil).map { |role| role.name.capitalize }.join(', ') %>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<div>
|
18
|
+
<pre>
|
19
|
+
<code>
|
20
|
+
<% user.roles.each do |role| %>
|
21
|
+
<%=
|
22
|
+
extra_info = if role.resource_type
|
23
|
+
" (#{role.resource_type}: #{role.resource_id})"
|
24
|
+
else
|
25
|
+
""
|
26
|
+
end
|
27
|
+
"#{role.id} - #{role.name}, #{extra_info}"
|
28
|
+
%>
|
29
|
+
<% end %>
|
30
|
+
</code>
|
31
|
+
</pre>
|
32
|
+
</div>
|
33
|
+
|
34
|
+
</div>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
david = User.create(email: 'david@site.com', name: 'david', password: 'password', password_confirmation: 'password')
|
2
|
+
james = User.create(email: 'james@site.com', name: 'james', password: 'password', password_confirmation: 'password')
|
3
|
+
sally = User.create(email: 'sally@site.com', name: 'sally', password: 'password', password_confirmation: 'password')
|
4
|
+
chloe = User.create(email: 'chloe@site.com', name: 'chloe', password: 'password', password_confirmation: 'password')
|
5
|
+
|
6
|
+
david.add_role(:super_user)
|
7
|
+
james.add_role(:admin)
|
8
|
+
sally.add_role(:moderator)
|
9
|
+
chloe.add_role(:admin)
|
10
|
+
chloe.add_role(:moderator)
|
11
|
+
|
12
|
+
10.times do
|
13
|
+
user = User.all.sample
|
14
|
+
post = Post.create(
|
15
|
+
title: "Post #{Faker::Lorem.words(number: rand(1..3)).join(' ')}",
|
16
|
+
body: "#{Faker::Lorem.sentences(number: 8).join("<br />")}"
|
17
|
+
)
|
18
|
+
user.add_role(:author, post)
|
19
|
+
end
|
@@ -65,6 +65,7 @@
|
|
65
65
|
"add_public_suffix",
|
66
66
|
"add_rails_html_sanitizer",
|
67
67
|
"add_redcarpet",
|
68
|
+
"add_rolify",
|
68
69
|
"add_rubocop",
|
69
70
|
"add_twilio_ruby"
|
70
71
|
],
|
@@ -524,6 +525,13 @@
|
|
524
525
|
"default": false,
|
525
526
|
"required": false
|
526
527
|
},
|
528
|
+
{
|
529
|
+
"name": "add_rolify",
|
530
|
+
"description": "Indicates when to generate add rolify",
|
531
|
+
"type": "boolean",
|
532
|
+
"default": false,
|
533
|
+
"required": false
|
534
|
+
},
|
527
535
|
{
|
528
536
|
"name": "add_rubocop",
|
529
537
|
"description": "Indicates when to generate add rubocop",
|
@@ -40,7 +40,7 @@
|
|
40
40
|
"add_devise": true,
|
41
41
|
"add_devise_masquerade": false,
|
42
42
|
"add_dotenv": false,
|
43
|
-
"add_faker":
|
43
|
+
"add_faker": true,
|
44
44
|
"add_groupdate": false,
|
45
45
|
"add_hexapdf": false,
|
46
46
|
"add_httparty": false,
|
@@ -51,12 +51,13 @@
|
|
51
51
|
"add_mini_magick": false,
|
52
52
|
"add_motor_admin": false,
|
53
53
|
"add_phony_rails": false,
|
54
|
-
"add_pretender":
|
54
|
+
"add_pretender": false,
|
55
55
|
"add_public_suffix": false,
|
56
56
|
"add_rails_html_sanitizer": false,
|
57
57
|
"add_redcarpet": false,
|
58
|
+
"add_rolify": true,
|
58
59
|
"add_rubocop": false,
|
59
60
|
"add_twilio_ruby": false,
|
60
|
-
"template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/
|
61
|
+
"template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/rolify/_.rb"
|
61
62
|
}
|
62
63
|
}
|
@@ -65,6 +65,7 @@
|
|
65
65
|
"add_public_suffix",
|
66
66
|
"add_rails_html_sanitizer",
|
67
67
|
"add_redcarpet",
|
68
|
+
"add_rolify",
|
68
69
|
"add_rubocop",
|
69
70
|
"add_twilio_ruby"
|
70
71
|
],
|
@@ -524,6 +525,13 @@
|
|
524
525
|
"default": false,
|
525
526
|
"required": false
|
526
527
|
},
|
528
|
+
{
|
529
|
+
"name": "add_rolify",
|
530
|
+
"description": "",
|
531
|
+
"type": "boolean",
|
532
|
+
"default": false,
|
533
|
+
"required": false
|
534
|
+
},
|
527
535
|
{
|
528
536
|
"name": "add_rubocop",
|
529
537
|
"description": "",
|
@@ -7,7 +7,7 @@
|
|
7
7
|
"quiet": false,
|
8
8
|
"skip": false,
|
9
9
|
"ruby": "/Users/davidcruwys/.asdf/installs/ruby/2.7.6/bin/ruby",
|
10
|
-
"template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/
|
10
|
+
"template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/rolify/_.rb",
|
11
11
|
"database": "sqlite3",
|
12
12
|
"skip_git": true,
|
13
13
|
"skip_keeps": false,
|
@@ -50,7 +50,7 @@
|
|
50
50
|
"add_devise": true,
|
51
51
|
"add_devise_masquerade": false,
|
52
52
|
"add_dotenv": false,
|
53
|
-
"add_faker":
|
53
|
+
"add_faker": true,
|
54
54
|
"add_groupdate": false,
|
55
55
|
"add_hexapdf": false,
|
56
56
|
"add_httparty": false,
|
@@ -61,10 +61,11 @@
|
|
61
61
|
"add_mini_magick": false,
|
62
62
|
"add_motor_admin": false,
|
63
63
|
"add_phony_rails": false,
|
64
|
-
"add_pretender":
|
64
|
+
"add_pretender": false,
|
65
65
|
"add_public_suffix": false,
|
66
66
|
"add_rails_html_sanitizer": false,
|
67
67
|
"add_redcarpet": false,
|
68
|
+
"add_rolify": true,
|
68
69
|
"add_rubocop": false,
|
69
70
|
"add_twilio_ruby": false
|
70
71
|
}
|
@@ -41,12 +41,21 @@ module RailsAppGenerator
|
|
41
41
|
private
|
42
42
|
|
43
43
|
def setup_db
|
44
|
-
|
44
|
+
if active?(:rolify)
|
45
|
+
# Rolify will setup up a role relationship
|
46
|
+
user_basic
|
47
|
+
else
|
48
|
+
user_with_simplified_role
|
49
|
+
end
|
50
|
+
end
|
45
51
|
|
46
|
-
|
52
|
+
def user_basic
|
53
|
+
generate(:devise, 'User', 'name', capture: true)
|
47
54
|
end
|
48
55
|
|
49
|
-
def
|
56
|
+
def user_with_simplified_role
|
57
|
+
generate(:devise, 'User', 'name', 'role:integer', capture: true)
|
58
|
+
|
50
59
|
in_root do
|
51
60
|
migration = Dir.glob('db/migrate/*').max_by { |f| File.mtime(f) }
|
52
61
|
gsub_file migration, /:role/, ':role, default: 0'
|
@@ -5,32 +5,13 @@ module RailsAppGenerator
|
|
5
5
|
module AddOns
|
6
6
|
# Add Rolify to rails application
|
7
7
|
class Rolify < RailsAppGenerator::Addon
|
8
|
-
required_gem gem.version('rolify', '6.0.0', 'Role management library with resource scoping
|
8
|
+
required_gem gem.version('rolify', '6.0.0', 'Role management library with resource scoping')
|
9
9
|
|
10
10
|
def apply
|
11
11
|
# bundle_install
|
12
|
-
generate('rolify', '
|
12
|
+
generate('rolify', 'Role', 'User', capture: true)
|
13
13
|
|
14
|
-
|
15
|
-
# template('rolify_template.rb', 'target/rolify.rb', force: true)
|
16
|
-
# template('app/javascript/stylesheets/components.scss')
|
17
|
-
# create_file('target/rolify.rb', 'put your content here')
|
18
|
-
# directory 'app/template', 'app/target', force: true
|
19
|
-
# empty_directory 'app/target'
|
20
|
-
# inject_into_file('app/application.js', "some content")
|
21
|
-
# rails_command('tailwindcss:install')
|
22
|
-
end
|
23
|
-
|
24
|
-
def before_template
|
25
|
-
say 'Setting up Rolify - before custom template'
|
26
|
-
end
|
27
|
-
|
28
|
-
def before_bundle
|
29
|
-
say 'Setting up Rolify - before bundle install'
|
30
|
-
end
|
31
|
-
|
32
|
-
def after_bundle
|
33
|
-
say 'Setting up Rolify - after bundle install'
|
14
|
+
gsub_file 'config/initializers/rolify.rb', '# config.use_dynamic_shortcuts', 'config.use_dynamic_shortcuts'
|
34
15
|
end
|
35
16
|
end
|
36
17
|
end
|
data/package-lock.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "rails_app_generator",
|
3
|
-
"version": "0.2.
|
3
|
+
"version": "0.2.29",
|
4
4
|
"lockfileVersion": 2,
|
5
5
|
"requires": true,
|
6
6
|
"packages": {
|
7
7
|
"": {
|
8
8
|
"name": "rails_app_generator",
|
9
|
-
"version": "0.2.
|
9
|
+
"version": "0.2.29",
|
10
10
|
"dependencies": {
|
11
11
|
"daisyui": "^2.20.0"
|
12
12
|
},
|
data/package.json
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
{
|
2
|
+
"args": {
|
3
|
+
"app_path": "r7_rolify",
|
4
|
+
"destination_root": "/Users/davidcruwys/dev/kgems/rails_app_generator/a/addons"
|
5
|
+
},
|
6
|
+
"opts": {
|
7
|
+
"skip_git": true,
|
8
|
+
"skip_test": true,
|
9
|
+
"template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/rolify/_.rb",
|
10
|
+
"javascript": "esbuild",
|
11
|
+
"add_annotate": true,
|
12
|
+
"add_devise": true,
|
13
|
+
"add_rolify": true,
|
14
|
+
"add_faker": true,
|
15
|
+
"add_minimal_css": true
|
16
|
+
}
|
17
|
+
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_app_generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.29
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Cruwys
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-08-
|
11
|
+
date: 2022-08-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bootsnap
|
@@ -348,6 +348,25 @@ files:
|
|
348
348
|
- after_templates/addons/redcarpet/app/views/layouts/_footer.html.erb
|
349
349
|
- after_templates/addons/redcarpet/app/views/layouts/_navbar.html.erb
|
350
350
|
- after_templates/addons/redcarpet/app/views/layouts/application.html.erb
|
351
|
+
- after_templates/addons/rolify/_.rb
|
352
|
+
- after_templates/addons/rolify/app/controllers/home_controller.rb
|
353
|
+
- after_templates/addons/rolify/app/controllers/rolify_controller.rb
|
354
|
+
- after_templates/addons/rolify/app/models/post.rb
|
355
|
+
- after_templates/addons/rolify/app/models/user.rb
|
356
|
+
- after_templates/addons/rolify/app/views/home/_roles.html.erb
|
357
|
+
- after_templates/addons/rolify/app/views/home/bossy_boots.html.erb
|
358
|
+
- after_templates/addons/rolify/app/views/home/index.html.erb
|
359
|
+
- after_templates/addons/rolify/app/views/home/super_hero.html.erb
|
360
|
+
- after_templates/addons/rolify/app/views/home/use_in_moderation.html.erb
|
361
|
+
- after_templates/addons/rolify/app/views/home/use_me.html.erb
|
362
|
+
- after_templates/addons/rolify/app/views/layouts/_footer.html.erb
|
363
|
+
- after_templates/addons/rolify/app/views/layouts/_navbar.html.erb
|
364
|
+
- after_templates/addons/rolify/app/views/layouts/application.html.erb
|
365
|
+
- after_templates/addons/rolify/app/views/rolify/_form.html.erb
|
366
|
+
- after_templates/addons/rolify/app/views/rolify/_user.html.erb
|
367
|
+
- after_templates/addons/rolify/app/views/rolify/edit.html.erb
|
368
|
+
- after_templates/addons/rolify/app/views/rolify/show.html.erb
|
369
|
+
- after_templates/addons/rolify/db/seeds.rb
|
351
370
|
- after_templates/addons/rubocop/_.rb
|
352
371
|
- after_templates/addons/rubocop/app/assets/images/cop-output.png
|
353
372
|
- after_templates/addons/rubocop/app/controllers/home_controller.rb
|
@@ -675,6 +694,7 @@ files:
|
|
675
694
|
- profiles/addons/public_suffix.json
|
676
695
|
- profiles/addons/rails_html_sanitizer.json
|
677
696
|
- profiles/addons/redcarpet.json
|
697
|
+
- profiles/addons/rolify.json
|
678
698
|
- profiles/addons/rubocop.json
|
679
699
|
- profiles/addons/twilio_ruby.json
|
680
700
|
- profiles/application/printspeak.json
|