rails_app_generator 0.2.26 → 0.2.27
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/devise_masquerade/_.rb +7 -7
- data/after_templates/addons/devise_masquerade/app/views/home/index.html.erb +2 -6
- data/after_templates/addons/pretender/_.rb +36 -0
- data/after_templates/addons/pretender/app/controllers/application_controller.rb +3 -0
- data/after_templates/addons/pretender/app/controllers/home_controller.rb +4 -0
- data/after_templates/addons/pretender/app/models/user.rb +15 -0
- data/after_templates/addons/pretender/app/views/home/index.html.erb +67 -0
- data/after_templates/addons/pretender/app/views/layouts/_footer.html.erb +1 -0
- data/after_templates/addons/pretender/app/views/layouts/_navbar.html.erb +8 -0
- data/after_templates/addons/pretender/app/views/layouts/application.html.erb +58 -0
- data/after_templates/addons/pretender/db/seeds.rb +3 -0
- data/docs/last_run/app_generator_class.json +13 -5
- data/docs/last_run/app_generator_data.json +4 -3
- data/docs/last_run/rails_options_class.json +11 -3
- data/docs/last_run/rails_options_data.json +5 -5
- data/lib/rails_app_generator/addon.rb +6 -0
- data/lib/rails_app_generator/addons/devise.rb +9 -2
- data/lib/rails_app_generator/addons/pretender.rb +6 -1
- data/lib/rails_app_generator/version.rb +1 -1
- data/package-lock.json +2 -2
- data/package.json +1 -1
- data/profiles/addons/pretender.json +16 -0
- data/templates/addons/pretender/app/controllers/pretender_controller.rb +14 -0
- data/templates/thor_task/profile/after_template.rb +22 -16
- data/templates/thor_task/profile/profile.json.tt +1 -1
- metadata +12 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 565ddb65a7bec52098a301ef1822887e25881dd6716cdbc7b3575a23540be220
|
|
4
|
+
data.tar.gz: 23a08258713108287331947e02a324d23a33c41e6db718a66263d2dc8e3ee330
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8b638c9a61ef4272fa78434e3cd93af9bf0e84eb7efef3a1a7293d6014ddada3cd75693c94180f63c78854266f15705c44219acf6f233a0cfc444849c8735753
|
|
7
|
+
data.tar.gz: '02794a7a859e5869a4bb4f6fc912fccc8ad3ae96931c0ee8e66b3ba7a14950a4d9d3ec2224a71d307a07cc6aa8a6687dad7945ee55dcefc56dde3899a3559ceb'
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [0.2.26](https://github.com/klueless-io/rails_app_generator/compare/v0.2.25...v0.2.26) (2022-08-17)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* add pretender addon ([e0bda54](https://github.com/klueless-io/rails_app_generator/commit/e0bda54cc74da230a579ff1219b9b2f2172936d1))
|
|
7
|
+
|
|
1
8
|
## [0.2.25](https://github.com/klueless-io/rails_app_generator/compare/v0.2.24...v0.2.25) (2022-08-17)
|
|
2
9
|
|
|
3
10
|
|
|
@@ -15,13 +15,6 @@ after_bundle do
|
|
|
15
15
|
setup_db
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
def setup_db
|
|
19
|
-
template 'db/seeds.rb' , 'db/seeds.rb'
|
|
20
|
-
|
|
21
|
-
db_migrate
|
|
22
|
-
db_seed
|
|
23
|
-
end
|
|
24
|
-
|
|
25
18
|
def setup_customizations
|
|
26
19
|
route("root 'home#index'")
|
|
27
20
|
|
|
@@ -34,3 +27,10 @@ def setup_customizations
|
|
|
34
27
|
directory "app/views"
|
|
35
28
|
template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
|
|
36
29
|
end
|
|
30
|
+
|
|
31
|
+
def setup_db
|
|
32
|
+
template 'db/seeds.rb' , 'db/seeds.rb'
|
|
33
|
+
|
|
34
|
+
db_migrate
|
|
35
|
+
db_seed
|
|
36
|
+
end
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
<p><b class='alert'>Warning!</b> If <code>masquerade?</code> is never returning <code>true</code> then ensure you have turned on caching in development using <code>rails dev:cache</code> </p>
|
|
6
6
|
|
|
7
|
-
<pre><code>
|
|
7
|
+
<pre><code>true_user => <%= current_user ? true_user.name : 'NOT SIGNED IN' %></code></pre>
|
|
8
8
|
|
|
9
9
|
<p>Sign in with an <b>Admin</b> user and then impersonate other users</p>
|
|
10
10
|
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
<% if current_user.user? %>
|
|
47
47
|
Cannot masquerade
|
|
48
48
|
<% elsif user.user? %>
|
|
49
|
-
<%= link_to user.name.capitalize, masquerade_path(user) %>
|
|
49
|
+
<%= link_to user.name.capitalize, masquerade_path(user), data: { turbo_method: :post } %>
|
|
50
50
|
<% else %>
|
|
51
51
|
|
|
52
52
|
<% end %>
|
|
@@ -60,7 +60,3 @@
|
|
|
60
60
|
</tr>
|
|
61
61
|
<% end %>
|
|
62
62
|
</table>
|
|
63
|
-
|
|
64
|
-
<% if current_user&.user? && !user_masquerade? %>
|
|
65
|
-
<p class='alert'>Sign in as an admin user</p>
|
|
66
|
-
<% end %>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Log in as another user in Rails
|
|
4
|
+
#
|
|
5
|
+
# exe/rag addons/pretender
|
|
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
|
+
setup_customizations
|
|
15
|
+
setup_db
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def setup_customizations
|
|
19
|
+
route("root 'home#index'")
|
|
20
|
+
|
|
21
|
+
force_copy
|
|
22
|
+
|
|
23
|
+
add_controller('home', 'index')
|
|
24
|
+
|
|
25
|
+
directory "app/controllers"
|
|
26
|
+
directory "app/models"
|
|
27
|
+
directory "app/views"
|
|
28
|
+
template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def setup_db
|
|
32
|
+
template 'db/seeds.rb' , 'db/seeds.rb'
|
|
33
|
+
|
|
34
|
+
db_migrate
|
|
35
|
+
db_seed
|
|
36
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
class User < ApplicationRecord
|
|
2
|
+
after_initialize :set_default_role, if: :new_record?
|
|
3
|
+
|
|
4
|
+
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable
|
|
5
|
+
|
|
6
|
+
has_many :posts
|
|
7
|
+
|
|
8
|
+
enum role: { user: 0, moderator: 1, admin: 9 }
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def set_default_role
|
|
13
|
+
self.role ||= :user
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
<h1>Pretender</h1>
|
|
2
|
+
|
|
3
|
+
<h4>Log in as another user in Rails</h4>
|
|
4
|
+
|
|
5
|
+
<pre><code>true_user => <%= current_user ? true_user.name : 'NOT SIGNED IN' %></code></pre>
|
|
6
|
+
|
|
7
|
+
<p>Sign in with an <b>Admin</b> user and then impersonate other users</p>
|
|
8
|
+
|
|
9
|
+
<h3>Sample users and passwords</h3>
|
|
10
|
+
|
|
11
|
+
<% if current_user %>
|
|
12
|
+
<% if current_user.admin? %>
|
|
13
|
+
<h1 class='admin'><%= current_user.name.capitalize %> - Admininstrator</h1>
|
|
14
|
+
<% elsif current_user.user? %>
|
|
15
|
+
<h1 class='user'><%= current_user.name.capitalize %> - User</h1>
|
|
16
|
+
<% end %>
|
|
17
|
+
<% else %>
|
|
18
|
+
<h1 class='not-signed-in'>Not currently signed in</h1>
|
|
19
|
+
<% end %>
|
|
20
|
+
|
|
21
|
+
<table style='width: 600px;'>
|
|
22
|
+
<tr>
|
|
23
|
+
<th>Name</th>
|
|
24
|
+
<th>Email</th>
|
|
25
|
+
<th>Role</th>
|
|
26
|
+
<% if current_user %>
|
|
27
|
+
<th>Impersonate</th>
|
|
28
|
+
<% else %>
|
|
29
|
+
<th>Password</th>
|
|
30
|
+
<% end %>
|
|
31
|
+
</tr>
|
|
32
|
+
|
|
33
|
+
<% if current_user != true_user %>
|
|
34
|
+
You (<%= true_user.name %>) are signed in as <%= current_user.name %>
|
|
35
|
+
<% end %>
|
|
36
|
+
|
|
37
|
+
<% User.all.each do |user| %>
|
|
38
|
+
<tr>
|
|
39
|
+
<td><%= user.name %></td>
|
|
40
|
+
<td><%= user.email %></td>
|
|
41
|
+
<td><%= user.role %></td>
|
|
42
|
+
<td>
|
|
43
|
+
<% if current_user %>
|
|
44
|
+
<% if current_user.admin? %>
|
|
45
|
+
<% if user.admin? && current_user != true_user %>
|
|
46
|
+
<%= link_to "Back to #{user.name.capitalize}", stop_impersonating_user_path, data: { turbo_method: :post } %>
|
|
47
|
+
<% elsif user.user? %>
|
|
48
|
+
<%= link_to user.name.capitalize, impersonate_user_path(user), data: { turbo_method: :post } %>
|
|
49
|
+
<% end %>
|
|
50
|
+
<% else %>
|
|
51
|
+
<% if user.admin? && current_user != true_user %>
|
|
52
|
+
<%= link_to "Back to #{user.name.capitalize}", stop_impersonating_user_path, data: { turbo_method: :post } %>
|
|
53
|
+
<% elsif current_user == true_user %>
|
|
54
|
+
N/A
|
|
55
|
+
<% else %>
|
|
56
|
+
|
|
57
|
+
<% end %>
|
|
58
|
+
<% end %>
|
|
59
|
+
<% else %>
|
|
60
|
+
password
|
|
61
|
+
<% end %>
|
|
62
|
+
|
|
63
|
+
</td>
|
|
64
|
+
</td>
|
|
65
|
+
</tr>
|
|
66
|
+
<% end %>
|
|
67
|
+
</table>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<hr />
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<%= link_to 'Home', root_path %>
|
|
2
|
+
<% if current_user %>
|
|
3
|
+
| <%= link_to 'Sign Out', destroy_user_session_path, data: { turbo_method: :delete } %>
|
|
4
|
+
| Current User: <b><%= current_user.name.capitalize %></b>
|
|
5
|
+
| True User: <b><%= true_user.name.capitalize %></b>
|
|
6
|
+
<% else %>
|
|
7
|
+
| <%= link_to 'Sign In', new_user_session_path %>
|
|
8
|
+
<% end%>
|
|
@@ -0,0 +1,58 @@
|
|
|
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
|
+
.admin {
|
|
30
|
+
background-color: pink;
|
|
31
|
+
}
|
|
32
|
+
.user {
|
|
33
|
+
background-color: lightgreen;
|
|
34
|
+
}
|
|
35
|
+
.not-signed-in {
|
|
36
|
+
background-color: lightgrey;
|
|
37
|
+
}
|
|
38
|
+
.admin, .user, .not-signed-in {
|
|
39
|
+
text-align: center;
|
|
40
|
+
}
|
|
41
|
+
</style>
|
|
42
|
+
</head>
|
|
43
|
+
|
|
44
|
+
<body>
|
|
45
|
+
<header>
|
|
46
|
+
<%%= render 'layouts/navbar' %>
|
|
47
|
+
<hr />
|
|
48
|
+
<%%= render 'layouts/alerts' %>
|
|
49
|
+
</header>
|
|
50
|
+
<main>
|
|
51
|
+
<%%= yield %>
|
|
52
|
+
</main>
|
|
53
|
+
<footer>
|
|
54
|
+
<%%= render 'layouts/footer' %>
|
|
55
|
+
</footer>
|
|
56
|
+
</body>
|
|
57
|
+
</html>
|
|
58
|
+
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
User.create(email: 'david@site.com', name: 'david', password: 'password', password_confirmation: 'password', role: :admin)
|
|
2
|
+
User.create(email: 'james@site.com', name: 'james', password: 'password', password_confirmation: 'password')
|
|
3
|
+
User.create(email: 'sally@site.com', name: 'sally', password: 'password', password_confirmation: 'password')
|
|
@@ -60,8 +60,9 @@
|
|
|
60
60
|
"minimal_css_library",
|
|
61
61
|
"add_mini_magick",
|
|
62
62
|
"add_motor_admin",
|
|
63
|
-
"add_public_suffix",
|
|
64
63
|
"add_phony_rails",
|
|
64
|
+
"add_pretender",
|
|
65
|
+
"add_public_suffix",
|
|
65
66
|
"add_rails_html_sanitizer",
|
|
66
67
|
"add_redcarpet",
|
|
67
68
|
"add_rubocop",
|
|
@@ -489,15 +490,22 @@
|
|
|
489
490
|
"required": false
|
|
490
491
|
},
|
|
491
492
|
{
|
|
492
|
-
"name": "
|
|
493
|
-
"description": "Indicates when to generate add
|
|
493
|
+
"name": "add_phony_rails",
|
|
494
|
+
"description": "Indicates when to generate add phony rails",
|
|
494
495
|
"type": "boolean",
|
|
495
496
|
"default": false,
|
|
496
497
|
"required": false
|
|
497
498
|
},
|
|
498
499
|
{
|
|
499
|
-
"name": "
|
|
500
|
-
"description": "Indicates when to generate add
|
|
500
|
+
"name": "add_pretender",
|
|
501
|
+
"description": "Indicates when to generate add pretender",
|
|
502
|
+
"type": "boolean",
|
|
503
|
+
"default": false,
|
|
504
|
+
"required": false
|
|
505
|
+
},
|
|
506
|
+
{
|
|
507
|
+
"name": "add_public_suffix",
|
|
508
|
+
"description": "Indicates when to generate add public suffix",
|
|
501
509
|
"type": "boolean",
|
|
502
510
|
"default": false,
|
|
503
511
|
"required": false
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"add_browser": false,
|
|
39
39
|
"add_chartkick": false,
|
|
40
40
|
"add_devise": true,
|
|
41
|
-
"add_devise_masquerade":
|
|
41
|
+
"add_devise_masquerade": false,
|
|
42
42
|
"add_dotenv": false,
|
|
43
43
|
"add_faker": false,
|
|
44
44
|
"add_groupdate": false,
|
|
@@ -50,12 +50,13 @@
|
|
|
50
50
|
"minimal_css_library": "water.css",
|
|
51
51
|
"add_mini_magick": false,
|
|
52
52
|
"add_motor_admin": false,
|
|
53
|
-
"add_public_suffix": false,
|
|
54
53
|
"add_phony_rails": false,
|
|
54
|
+
"add_pretender": true,
|
|
55
|
+
"add_public_suffix": false,
|
|
55
56
|
"add_rails_html_sanitizer": false,
|
|
56
57
|
"add_redcarpet": false,
|
|
57
58
|
"add_rubocop": false,
|
|
58
59
|
"add_twilio_ruby": false,
|
|
59
|
-
"template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/
|
|
60
|
+
"template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/pretender/_.rb"
|
|
60
61
|
}
|
|
61
62
|
}
|
|
@@ -60,8 +60,9 @@
|
|
|
60
60
|
"minimal_css_library",
|
|
61
61
|
"add_mini_magick",
|
|
62
62
|
"add_motor_admin",
|
|
63
|
-
"add_public_suffix",
|
|
64
63
|
"add_phony_rails",
|
|
64
|
+
"add_pretender",
|
|
65
|
+
"add_public_suffix",
|
|
65
66
|
"add_rails_html_sanitizer",
|
|
66
67
|
"add_redcarpet",
|
|
67
68
|
"add_rubocop",
|
|
@@ -489,14 +490,21 @@
|
|
|
489
490
|
"required": false
|
|
490
491
|
},
|
|
491
492
|
{
|
|
492
|
-
"name": "
|
|
493
|
+
"name": "add_phony_rails",
|
|
493
494
|
"description": "",
|
|
494
495
|
"type": "boolean",
|
|
495
496
|
"default": false,
|
|
496
497
|
"required": false
|
|
497
498
|
},
|
|
498
499
|
{
|
|
499
|
-
"name": "
|
|
500
|
+
"name": "add_pretender",
|
|
501
|
+
"description": "",
|
|
502
|
+
"type": "boolean",
|
|
503
|
+
"default": false,
|
|
504
|
+
"required": false
|
|
505
|
+
},
|
|
506
|
+
{
|
|
507
|
+
"name": "add_public_suffix",
|
|
500
508
|
"description": "",
|
|
501
509
|
"type": "boolean",
|
|
502
510
|
"default": false,
|
|
@@ -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/pretender/_.rb",
|
|
11
11
|
"database": "sqlite3",
|
|
12
12
|
"skip_git": true,
|
|
13
13
|
"skip_keeps": false,
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"add_browser": false,
|
|
49
49
|
"add_chartkick": false,
|
|
50
50
|
"add_devise": true,
|
|
51
|
-
"add_devise_masquerade":
|
|
51
|
+
"add_devise_masquerade": false,
|
|
52
52
|
"add_dotenv": false,
|
|
53
53
|
"add_faker": false,
|
|
54
54
|
"add_groupdate": false,
|
|
@@ -60,12 +60,12 @@
|
|
|
60
60
|
"minimal_css_library": "water.css",
|
|
61
61
|
"add_mini_magick": false,
|
|
62
62
|
"add_motor_admin": false,
|
|
63
|
-
"add_public_suffix": false,
|
|
64
63
|
"add_phony_rails": false,
|
|
64
|
+
"add_pretender": true,
|
|
65
|
+
"add_public_suffix": false,
|
|
65
66
|
"add_rails_html_sanitizer": false,
|
|
66
67
|
"add_redcarpet": false,
|
|
67
68
|
"add_rubocop": false,
|
|
68
|
-
"add_twilio_ruby": false
|
|
69
|
-
"notes": "there is a name conflict if the rails application has the same name as the gem and so devise_masquerade has been renamed to devise_masquerade_sample"
|
|
69
|
+
"add_twilio_ruby": false
|
|
70
70
|
}
|
|
71
71
|
}
|
|
@@ -94,6 +94,12 @@ module RailsAppGenerator
|
|
|
94
94
|
::FileUtils.mv(source, target)
|
|
95
95
|
end
|
|
96
96
|
# rubocop:enable Metrics/AbcSize
|
|
97
|
+
|
|
98
|
+
def bundle_install
|
|
99
|
+
Util.bundler_environment(environment_style: :unbundled_env) do
|
|
100
|
+
run('bundle install')
|
|
101
|
+
end
|
|
102
|
+
end
|
|
97
103
|
end
|
|
98
104
|
# rubocop:enable Metrics/BlockLength
|
|
99
105
|
|
|
@@ -10,10 +10,11 @@ module RailsAppGenerator
|
|
|
10
10
|
required_gem gem.version('devise', '4.8.1', 'Flexible authentication solution for Rails with Warden')
|
|
11
11
|
|
|
12
12
|
def apply
|
|
13
|
+
bundle_install
|
|
14
|
+
|
|
13
15
|
generate('devise:install', capture: true)
|
|
14
|
-
generate(:devise, 'User', 'name', 'role:integer', capture: true)
|
|
15
16
|
|
|
16
|
-
|
|
17
|
+
setup_db
|
|
17
18
|
|
|
18
19
|
add_trackable if option?(:devise_has_trackable)
|
|
19
20
|
add_confirmable if option?(:devise_has_confirmable)
|
|
@@ -39,6 +40,12 @@ module RailsAppGenerator
|
|
|
39
40
|
|
|
40
41
|
private
|
|
41
42
|
|
|
43
|
+
def setup_db
|
|
44
|
+
generate(:devise, 'User', 'name', 'role:integer', capture: true)
|
|
45
|
+
|
|
46
|
+
update_migration
|
|
47
|
+
end
|
|
48
|
+
|
|
42
49
|
def update_migration
|
|
43
50
|
in_root do
|
|
44
51
|
migration = Dir.glob('db/migrate/*').max_by { |f| File.mtime(f) }
|
|
@@ -7,7 +7,12 @@ module RailsAppGenerator
|
|
|
7
7
|
class Pretender < RailsAppGenerator::Addon
|
|
8
8
|
required_gem gem.version('pretender', '0.4.0', 'Log in as another user in Rails')
|
|
9
9
|
|
|
10
|
-
def apply
|
|
10
|
+
def apply
|
|
11
|
+
copy_file('app/controllers/pretender_controller.rb', 'app/controllers/pretender_controller.rb')
|
|
12
|
+
|
|
13
|
+
route("post 'pretender/:user_id/impersonate' , to: 'pretender#impersonate' , :as => :impersonate_user")
|
|
14
|
+
route("post 'pretender/stop_impersonating' , to: 'pretender#stop_impersonating' , :as => :stop_impersonating_user")
|
|
15
|
+
end
|
|
11
16
|
end
|
|
12
17
|
end
|
|
13
18
|
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.27",
|
|
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.27",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"daisyui": "^2.20.0"
|
|
12
12
|
},
|
data/package.json
CHANGED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"args": {
|
|
3
|
+
"app_path": "r7_pretender",
|
|
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/pretender/_.rb",
|
|
10
|
+
"javascript": "esbuild",
|
|
11
|
+
"add_annotate": true,
|
|
12
|
+
"add_devise": true,
|
|
13
|
+
"add_pretender": true,
|
|
14
|
+
"add_minimal_css": true
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
class PretenderController < ApplicationController
|
|
2
|
+
before_action :authenticate_user!
|
|
3
|
+
|
|
4
|
+
def impersonate
|
|
5
|
+
user = User.find(params[:user_id])
|
|
6
|
+
impersonate_user(user)
|
|
7
|
+
redirect_to root_path
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def stop_impersonating
|
|
11
|
+
stop_impersonating_user
|
|
12
|
+
redirect_to root_path
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -10,30 +10,36 @@ gac 'base rails 7 image created'
|
|
|
10
10
|
|
|
11
11
|
prepare_environment
|
|
12
12
|
|
|
13
|
-
add_controller('home', 'index')
|
|
14
|
-
|
|
15
|
-
route("root 'home#index'")
|
|
16
|
-
|
|
17
|
-
force_copy
|
|
18
|
-
|
|
19
|
-
directory "app/controllers"
|
|
20
|
-
directory "app/views/home"
|
|
21
|
-
directory "app/views/layouts"
|
|
22
|
-
template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
|
|
23
|
-
|
|
24
|
-
template 'db/seeds.rb' , 'db/seeds.rb'
|
|
25
|
-
|
|
26
13
|
after_bundle do
|
|
14
|
+
scaffolds
|
|
15
|
+
setup_customizations
|
|
27
16
|
setup_db
|
|
28
17
|
end
|
|
29
18
|
|
|
30
|
-
def
|
|
19
|
+
def scaffolds
|
|
31
20
|
# add_scaffold('post', 'title', 'body:text', 'user:references')
|
|
32
21
|
# add_scaffold('people', 'first_name', 'last_name', 'age:integer', 'address:text')
|
|
33
22
|
# add_scaffold('product', 'name', 'price:integer')
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def setup_customizations
|
|
26
|
+
route("root 'home#index'")
|
|
27
|
+
|
|
28
|
+
force_copy
|
|
29
|
+
|
|
30
|
+
add_controller('home', 'index')
|
|
31
|
+
|
|
32
|
+
directory "app/controllers"
|
|
33
|
+
directory "app/models"
|
|
34
|
+
directory "app/views"
|
|
35
|
+
template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def setup_db
|
|
39
|
+
template 'db/seeds.rb' , 'db/seeds.rb'
|
|
34
40
|
|
|
35
|
-
|
|
36
|
-
|
|
41
|
+
db_migrate
|
|
42
|
+
db_seed
|
|
37
43
|
end
|
|
38
44
|
|
|
39
45
|
# Other template command examples
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
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.27
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- David Cruwys
|
|
@@ -327,6 +327,15 @@ files:
|
|
|
327
327
|
- after_templates/addons/phony_rails/app/controllers/home_controller.rb
|
|
328
328
|
- after_templates/addons/phony_rails/app/views/home/index.html.erb
|
|
329
329
|
- after_templates/addons/phony_rails/app/views/layouts/application.html.erb
|
|
330
|
+
- after_templates/addons/pretender/_.rb
|
|
331
|
+
- after_templates/addons/pretender/app/controllers/application_controller.rb
|
|
332
|
+
- after_templates/addons/pretender/app/controllers/home_controller.rb
|
|
333
|
+
- after_templates/addons/pretender/app/models/user.rb
|
|
334
|
+
- after_templates/addons/pretender/app/views/home/index.html.erb
|
|
335
|
+
- after_templates/addons/pretender/app/views/layouts/_footer.html.erb
|
|
336
|
+
- after_templates/addons/pretender/app/views/layouts/_navbar.html.erb
|
|
337
|
+
- after_templates/addons/pretender/app/views/layouts/application.html.erb
|
|
338
|
+
- after_templates/addons/pretender/db/seeds.rb
|
|
330
339
|
- after_templates/addons/public_suffix/_.rb
|
|
331
340
|
- after_templates/addons/public_suffix/app/controllers/home_controller.rb
|
|
332
341
|
- after_templates/addons/public_suffix/app/views/home/index.html.erb
|
|
@@ -661,6 +670,7 @@ files:
|
|
|
661
670
|
- profiles/addons/minimal_css.json
|
|
662
671
|
- profiles/addons/motor_admin.json
|
|
663
672
|
- profiles/addons/phony_rails.json
|
|
673
|
+
- profiles/addons/pretender.json
|
|
664
674
|
- profiles/addons/public_suffix.json
|
|
665
675
|
- profiles/addons/rails_html_sanitizer.json
|
|
666
676
|
- profiles/addons/redcarpet.json
|
|
@@ -710,6 +720,7 @@ files:
|
|
|
710
720
|
- templates/addons/honeybadger/honeybadger.sample.yml
|
|
711
721
|
- templates/addons/irbrc/.irbrc.erb
|
|
712
722
|
- templates/addons/lograge/config/initializers/lograge.rb
|
|
723
|
+
- templates/addons/pretender/app/controllers/pretender_controller.rb
|
|
713
724
|
- templates/addons/pundit/app/controllers/authorized_controller.rb.erb
|
|
714
725
|
- templates/addons/pundit/app/policies/application_policy.rb
|
|
715
726
|
- templates/addons/rspec/spec/rails_helper.rb
|