administration-zero 0.0.8 → 0.0.11
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/.rubocop.yml +15 -0
- data/Gemfile.lock +1 -1
- data/README.md +3 -5
- data/lib/administration_zero/version.rb +1 -1
- data/lib/generators/admin/install/install_generator.rb +1 -2
- data/lib/generators/admin/install/templates/controllers/admin/application_controller.rb +1 -1
- data/lib/generators/admin/install/templates/controllers/admin/password_resets_controller.rb +3 -3
- data/lib/generators/admin/install/templates/controllers/admin/sessions_controller.rb +2 -3
- data/lib/generators/admin/install/templates/controllers/admin/users_controller.rb +4 -4
- data/lib/generators/admin/install/templates/erb/admin/application/_flash_messages.html.erb +8 -8
- data/lib/generators/admin/install/templates/erb/admin/application/_page_header_breadcrumb.html.erb +2 -2
- data/lib/generators/admin/install/templates/erb/admin/application/_secondary_navbar.html.erb +1 -1
- data/lib/generators/admin/install/templates/erb/admin/password_resets/edit.html.erb +1 -1
- data/lib/generators/admin/install/templates/erb/admin/password_resets/new.html.erb +1 -1
- data/lib/generators/admin/install/templates/erb/admin/sessions/new.html.erb +1 -1
- data/lib/generators/admin/install/templates/erb/admin/user_mailer/password_reset.html.erb +14 -0
- data/lib/generators/admin/install/templates/erb/admin/user_mailer/{password_reset_provision.text.erb → password_reset.text.erb} +0 -0
- data/lib/generators/admin/install/templates/erb/admin/users/edit.html.erb +2 -2
- data/lib/generators/admin/install/templates/erb/admin/users/index.html.erb +5 -5
- data/lib/generators/admin/install/templates/erb/admin/users/new.html.erb +2 -2
- data/lib/generators/admin/install/templates/erb/admin/users/show.html.erb +4 -4
- data/lib/generators/admin/install/templates/helpers/admin/application_helper.rb +1 -1
- data/lib/generators/admin/install/templates/mailers/admin/application_mailer.rb +3 -0
- data/lib/generators/admin/install/templates/mailers/admin/user_mailer.rb +2 -2
- data/lib/generators/admin/install/templates/migrations/create_admin_users.rb.tt +2 -2
- data/lib/generators/admin/install/templates/models/admin/application_record.rb +3 -0
- data/lib/generators/admin/install/templates/models/admin/user.rb +10 -0
- data/lib/generators/admin/install/templates/seeds.rb +1 -1
- data/lib/generators/admin/install/templates/test_unit/application_system_test_case.rb +2 -2
- data/lib/generators/admin/install/templates/test_unit/controllers/admin/home_controller_test.rb +1 -1
- data/lib/generators/admin/install/templates/test_unit/controllers/admin/password_resets_controller_test.rb +1 -1
- data/lib/generators/admin/install/templates/test_unit/controllers/admin/sessions_controller_test.rb +1 -1
- data/lib/generators/admin/install/templates/test_unit/controllers/admin/users_controller_test.rb +5 -5
- data/lib/generators/admin/install/templates/test_unit/system/admin/sessions_test.rb +1 -1
- data/lib/generators/admin/install/templates/test_unit/system/admin/users_test.rb +9 -9
- data/lib/generators/admin/install/templates/test_unit/test_helper.rb +1 -1
- data/lib/generators/admin/scaffold/templates/erb/index.html.erb.tt +2 -2
- data/lib/generators/admin/scaffold/templates/erb/show.html.erb.tt +1 -1
- data/lib/generators/admin/scaffold/templates/functional_test.rb.tt +1 -1
- data/lib/generators/admin/scaffold/templates/system_test.rb.tt +1 -1
- metadata +8 -5
- data/lib/generators/admin/install/templates/erb/admin/user_mailer/password_reset_provision.html.erb +0 -11
- data/lib/generators/admin/install/templates/models/admin_user.rb +0 -15
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dfad604f4745dd7570ce2d3312be76883c4628d78b68f9cf73e895524e3a5b09
|
|
4
|
+
data.tar.gz: 8075becb0053683c3829418f3638203ec18e68c8457889e991d0f00330272c79
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 232ad1c394f2587baab5d9756a9bbd5a5aeb7a2367a62e650a7005ac8f65159d9394871295005aaa54834e69c53ce272d8366faec645498981b81f1770d88403
|
|
7
|
+
data.tar.gz: e19a765822a158ff63482d267ab4d3e231ca5024f21abf239ac783f4818d3629c6731bb1967c5a7b674992ea404b0b38efdecf341f1e8da92e71a07577878aee
|
data/.rubocop.yml
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
inherit_from: https://raw.githubusercontent.com/rails/rails/master/.rubocop.yml
|
|
2
|
+
|
|
3
|
+
Performance:
|
|
4
|
+
Exclude:
|
|
5
|
+
- 'test/**/*'
|
|
6
|
+
|
|
7
|
+
Style/FrozenStringLiteralComment:
|
|
8
|
+
Enabled: false
|
|
9
|
+
|
|
10
|
+
Style/StringLiterals:
|
|
11
|
+
Enabled: true
|
|
12
|
+
EnforcedStyle: double_quotes
|
|
13
|
+
Include:
|
|
14
|
+
- 'app/**/*'
|
|
15
|
+
- 'test/**/*'
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
|
@@ -27,13 +27,13 @@ Then run `bundle install`
|
|
|
27
27
|
You'll need to create a model to be administrated, if you don't have one. for this example let's use the following:
|
|
28
28
|
|
|
29
29
|
```
|
|
30
|
-
|
|
30
|
+
rails generate model posts title:string body:text published:boolean
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
## Usage
|
|
34
34
|
|
|
35
35
|
```
|
|
36
|
-
|
|
36
|
+
rails generate admin:install
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
Then run `bundle install` again
|
|
@@ -44,13 +44,11 @@ Then run `rails db:migrate db:seed`, you can access the admin panel in `/admin`,
|
|
|
44
44
|
Now you're ready to generate your admin scaffolds.
|
|
45
45
|
|
|
46
46
|
```
|
|
47
|
-
|
|
47
|
+
rails generate admin:scaffold posts title:string body:text published:boolean
|
|
48
48
|
```
|
|
49
49
|
|
|
50
50
|
## Development
|
|
51
51
|
|
|
52
|
-
After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
|
53
|
-
|
|
54
52
|
To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
|
55
53
|
|
|
56
54
|
## Contributing
|
|
@@ -21,12 +21,11 @@ module Admin
|
|
|
21
21
|
|
|
22
22
|
def create_models
|
|
23
23
|
directory "models/admin", "app/models/admin"
|
|
24
|
-
copy_file "models/admin_user.rb", "app/models/admin_user.rb"
|
|
25
24
|
copy_file "models/application_record.rb", "app/models/application_record.rb", force: true
|
|
26
25
|
end
|
|
27
26
|
|
|
28
27
|
def create_fixture_file
|
|
29
|
-
copy_file "test_unit/admin_users.yml", "test/fixtures/
|
|
28
|
+
copy_file "test_unit/admin_users.yml", "test/fixtures/admin/users.yml"
|
|
30
29
|
end
|
|
31
30
|
|
|
32
31
|
def create_controllers
|
|
@@ -4,7 +4,7 @@ class Admin::ApplicationController < ActionController::Base
|
|
|
4
4
|
before_action :authenticate
|
|
5
5
|
|
|
6
6
|
def authenticate
|
|
7
|
-
if admin_user =
|
|
7
|
+
if admin_user = Admin::User.find_by_id(session[:admin_user_id])
|
|
8
8
|
Admin::Current.user = admin_user
|
|
9
9
|
else
|
|
10
10
|
redirect_to admin_sign_in_path
|
|
@@ -12,8 +12,8 @@ class Admin::PasswordResetsController < Admin::ApplicationController
|
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
def create
|
|
15
|
-
if @admin_user =
|
|
16
|
-
Admin::UserMailer.with(admin_user: @admin_user).
|
|
15
|
+
if @admin_user = Admin::User.find_by(email: params[:email])
|
|
16
|
+
Admin::UserMailer.with(admin_user: @admin_user).password_reset.deliver_later
|
|
17
17
|
redirect_to admin_sign_in_path, notice: "Check your email for reset instructions"
|
|
18
18
|
else
|
|
19
19
|
redirect_to new_admin_password_reset_path, alert: "Sorry, we didn't recognize that email address"
|
|
@@ -30,7 +30,7 @@ class Admin::PasswordResetsController < Admin::ApplicationController
|
|
|
30
30
|
|
|
31
31
|
private
|
|
32
32
|
def set_admin_user
|
|
33
|
-
@admin_user =
|
|
33
|
+
@admin_user = Admin::User.find_signed!(params[:token], purpose: :password_reset)
|
|
34
34
|
rescue
|
|
35
35
|
redirect_to new_admin_password_reset_path, alert: "That password reset link is invalid"
|
|
36
36
|
end
|
|
@@ -4,15 +4,14 @@ class Admin::SessionsController < Admin::ApplicationController
|
|
|
4
4
|
layout "admin/authentication"
|
|
5
5
|
|
|
6
6
|
def new
|
|
7
|
-
@admin_user =
|
|
7
|
+
@admin_user = Admin::User.new
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
def create
|
|
11
|
-
@admin_user =
|
|
11
|
+
@admin_user = Admin::User.find_by(email: params[:email])
|
|
12
12
|
|
|
13
13
|
if @admin_user && @admin_user.authenticate(params[:password])
|
|
14
14
|
session[:admin_user_id] = @admin_user.id
|
|
15
|
-
|
|
16
15
|
redirect_to admin_path
|
|
17
16
|
else
|
|
18
17
|
redirect_to admin_sign_in_path(email_hint: params[:email]), alert: "That email or password is incorrect"
|
|
@@ -2,7 +2,7 @@ class Admin::UsersController < Admin::ApplicationController
|
|
|
2
2
|
before_action :set_admin_user, only: %i[ show edit update destroy ]
|
|
3
3
|
|
|
4
4
|
def index
|
|
5
|
-
@search =
|
|
5
|
+
@search = Admin::User.all.ransack(params[:q])
|
|
6
6
|
|
|
7
7
|
respond_to do |format|
|
|
8
8
|
format.html { @pagy, @admin_users = pagy(@search.result) }
|
|
@@ -14,14 +14,14 @@ class Admin::UsersController < Admin::ApplicationController
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def new
|
|
17
|
-
@admin_user =
|
|
17
|
+
@admin_user = Admin::User.new
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def edit
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def create
|
|
24
|
-
@admin_user =
|
|
24
|
+
@admin_user = Admin::User.new(admin_user_params)
|
|
25
25
|
|
|
26
26
|
if @admin_user.save
|
|
27
27
|
redirect_to @admin_user, notice: "User was successfully created."
|
|
@@ -45,7 +45,7 @@ class Admin::UsersController < Admin::ApplicationController
|
|
|
45
45
|
|
|
46
46
|
private
|
|
47
47
|
def set_admin_user
|
|
48
|
-
@admin_user =
|
|
48
|
+
@admin_user = Admin::User.find(params[:id])
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
def admin_user_params
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
<%
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
<% message = notice || alert %>
|
|
2
|
+
|
|
3
|
+
<% if message %>
|
|
4
|
+
<div class="position-fixed start-50 translate-middle-x" style="z-index: 1030; top: 8rem;">
|
|
5
|
+
<div class="toast hide text-center text-white bg-dark border-0" data-controller="flash-message">
|
|
6
|
+
<div class="toast-body">
|
|
7
|
+
<%= message %>
|
|
8
8
|
</div>
|
|
9
9
|
</div>
|
|
10
|
-
|
|
10
|
+
</div>
|
|
11
11
|
<% end %>
|
data/lib/generators/admin/install/templates/erb/admin/application/_secondary_navbar.html.erb
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
<svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><circle cx="9" cy="7" r="4"></circle><path d="M3 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2"></path><path d="M16 3.13a4 4 0 0 1 0 7.75"></path><path d="M21 21v-2a4 4 0 0 0 -3 -3.85"></path></svg>
|
|
20
20
|
</span>
|
|
21
21
|
<span class="nav-link-title">
|
|
22
|
-
|
|
22
|
+
Users
|
|
23
23
|
</span>
|
|
24
24
|
<% end %>
|
|
25
25
|
</li>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<%= form_with(url: admin_password_reset_path, method: :patch, class: "card card-md") do |form| %>
|
|
2
2
|
<div class="card-body">
|
|
3
|
-
<
|
|
3
|
+
<h1 class="card-title text-center mb-4">Reset password</h1>
|
|
4
4
|
|
|
5
5
|
<%= hidden_field_tag :token, params[:token] %>
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<%= form_with(url: admin_password_reset_path, class: "card card-md") do |form| %>
|
|
2
2
|
<div class="card-body">
|
|
3
|
-
<
|
|
3
|
+
<h1 class="card-title text-center mb-4">Forgot password</h1>
|
|
4
4
|
<p class="text-muted mb-4">Enter your email address and your password will be reset and emailed to you.</p>
|
|
5
5
|
<div class="mb-3">
|
|
6
6
|
<%= form.label :email, class: "form-label" %>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<%= form_with(url: admin_sign_in_path, class: "card card-md") do |form| %>
|
|
2
2
|
<div class="card-body">
|
|
3
|
-
<
|
|
3
|
+
<h1 class="card-title text-center mb-4">Login to your account</h1>
|
|
4
4
|
<div class="mb-3">
|
|
5
5
|
<%= form.label :email, class: "form-label" %>
|
|
6
6
|
<%= form.email_field :email, value: params[:email_hint], placeholder: "Enter email", autofocus: true, required: true, autocomplete: "email", class:"form-control" %>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
5
|
+
</head>
|
|
6
|
+
<body>
|
|
7
|
+
<p>Hey there,</p>
|
|
8
|
+
<p>Can't remember your password for <strong><%= @admin_user.email %></strong>? That's OK, it happens. Just hit the link below to set a new one.</p>
|
|
9
|
+
<p><%= link_to "Reset my password", edit_admin_password_reset_url(token: @signed_id) %></p>
|
|
10
|
+
<p>If you did not request a password reset you can safely ignore this email, it expires in 20 minutes. Only someone with access to this email account can reset your password.</p>
|
|
11
|
+
<hr>
|
|
12
|
+
<p>Have questions or need help? Just reply to this email and our support team will help you sort it out.</p>
|
|
13
|
+
</body>
|
|
14
|
+
</html>
|
|
File without changes
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<%= render "page_header" do %>
|
|
2
|
-
<%= render "page_header_breadcrumb", title: "Editing
|
|
2
|
+
<%= render "page_header_breadcrumb", title: "Editing user" do %>
|
|
3
3
|
<li class="breadcrumb-item"><%= link_to "Admin", admin_path %></li>
|
|
4
|
-
<li class="breadcrumb-item"><%= link_to "
|
|
4
|
+
<li class="breadcrumb-item"><%= link_to "Users", admin_users_path %></li>
|
|
5
5
|
<li class="breadcrumb-item"><%= link_to @admin_user.email, @admin_user %></li>
|
|
6
6
|
<% end %>
|
|
7
7
|
<% end %>
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
<%= render "page_header" do %>
|
|
2
|
-
<%= render "page_header_breadcrumb", title: "
|
|
2
|
+
<%= render "page_header_breadcrumb", title: "Users" do %>
|
|
3
3
|
<li class="breadcrumb-item"><%= link_to "Admin", admin_path %></li>
|
|
4
4
|
<% end %>
|
|
5
5
|
|
|
6
6
|
<%= render "page_header_actions" do %>
|
|
7
7
|
<%= link_to "Filters", "#offcanvas_filters", "data-bs-toggle": "offcanvas", class: "btn btn-light" %>
|
|
8
|
-
<%= link_to "New
|
|
8
|
+
<%= link_to "New user", new_admin_user_path, class: "btn btn-primary" %>
|
|
9
9
|
<% end %>
|
|
10
10
|
<% end %>
|
|
11
11
|
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
<td>
|
|
32
32
|
<%= link_to "View", admin_user, class: "btn btn-light btn-sm" %>
|
|
33
33
|
<%= link_to "Edit", edit_admin_user_path(admin_user), class: "btn btn-light btn-sm" %>
|
|
34
|
-
<%= button_to "Delete", admin_user, method: :delete, data
|
|
34
|
+
<%= button_to "Delete", admin_user, method: :delete, "data-confirm": "Are you sure?", form_class: "d-inline", class: "btn btn-light btn-sm" %>
|
|
35
35
|
</td>
|
|
36
36
|
</tr>
|
|
37
37
|
<% end %>
|
|
@@ -40,8 +40,8 @@
|
|
|
40
40
|
</div>
|
|
41
41
|
<div class="card-footer d-flex align-items-center fs-5">
|
|
42
42
|
<div class="d-none d-md-block">
|
|
43
|
-
<div>Download: <%= link_to "CSV",
|
|
44
|
-
|
|
43
|
+
<div>Download: <%= link_to "CSV", admin_users_path(format: :csv, q: request.params[:q]) %></div>
|
|
44
|
+
<%= raw pagy_info(@pagy) %>
|
|
45
45
|
</div>
|
|
46
46
|
<div class="ms-auto">
|
|
47
47
|
<%= render "pagination", pagy: @pagy %>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<%= render "page_header" do %>
|
|
2
|
-
<%= render "page_header_breadcrumb", title: "New
|
|
2
|
+
<%= render "page_header_breadcrumb", title: "New user" do %>
|
|
3
3
|
<li class="breadcrumb-item"><%= link_to "Admin", admin_path %></li>
|
|
4
|
-
<li class="breadcrumb-item"><%= link_to "
|
|
4
|
+
<li class="breadcrumb-item"><%= link_to "Users", admin_users_path %></li>
|
|
5
5
|
<% end %>
|
|
6
6
|
<% end %>
|
|
7
7
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
<%= render "page_header" do %>
|
|
2
2
|
<%= render "page_header_breadcrumb", title: @admin_user.email do %>
|
|
3
3
|
<li class="breadcrumb-item"><%= link_to "Admin", admin_path %></li>
|
|
4
|
-
<li class="breadcrumb-item"><%= link_to "
|
|
4
|
+
<li class="breadcrumb-item"><%= link_to "Users", admin_users_path %></li>
|
|
5
5
|
<% end %>
|
|
6
6
|
|
|
7
7
|
<%= render "page_header_actions" do %>
|
|
8
|
-
<%= link_to "Edit
|
|
9
|
-
<%= button_to "Delete
|
|
8
|
+
<%= link_to "Edit user", edit_admin_user_path(@admin_user), class: "btn btn-primary" %>
|
|
9
|
+
<%= button_to "Delete user", @admin_user, method: :delete, "data-confirm": "Are you sure?", form_class: "d-inline", class: "btn btn-light" %>
|
|
10
10
|
<% end %>
|
|
11
11
|
<% end %>
|
|
12
12
|
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
<div class="container-xl">
|
|
15
15
|
<div class="card">
|
|
16
16
|
<div class="card-header">
|
|
17
|
-
<h3 class="card-title">
|
|
17
|
+
<h3 class="card-title">User details</h3>
|
|
18
18
|
</div>
|
|
19
19
|
<div class="card-body">
|
|
20
20
|
<dl class="row">
|
|
@@ -2,7 +2,7 @@ module Admin::ApplicationHelper
|
|
|
2
2
|
include Pagy::Frontend
|
|
3
3
|
|
|
4
4
|
def title
|
|
5
|
-
content_for(:title) || Rails.application.class.to_s.split(
|
|
5
|
+
content_for(:title) || Rails.application.class.to_s.split("::").first
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
def active_nav_item(controller, actions = %w( index show new edit create update))
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
class Admin::UserMailer < ApplicationMailer
|
|
2
|
-
def
|
|
1
|
+
class Admin::UserMailer < Admin::ApplicationMailer
|
|
2
|
+
def password_reset
|
|
3
3
|
@admin_user = params[:admin_user]
|
|
4
4
|
@signed_id = @admin_user.signed_id(purpose: :password_reset, expires_in: 20.minutes)
|
|
5
5
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
class <%= migration_class_name %> < ActiveRecord::Migration[<%= ActiveRecord::Migration.current_version %>]
|
|
2
2
|
def change
|
|
3
3
|
create_table :admin_users do |t|
|
|
4
|
-
t.string :email
|
|
5
|
-
t.string :password_digest
|
|
4
|
+
t.string :email, null: false
|
|
5
|
+
t.string :password_digest, null: false
|
|
6
6
|
|
|
7
7
|
t.timestamps
|
|
8
8
|
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
class Admin::User < Admin::ApplicationRecord
|
|
2
|
+
has_secure_password
|
|
3
|
+
|
|
4
|
+
validates :email, presence: true, uniqueness: true, format: { with: URI::MailTo::EMAIL_REGEXP }
|
|
5
|
+
validates :password, allow_nil: true, length: { minimum: 12 }, format: { with: /(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])/ }
|
|
6
|
+
|
|
7
|
+
before_validation do
|
|
8
|
+
self.email = email.try(:downcase).try(:strip)
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
# movies = Movie.create([{ name: "Star Wars" }, { name: "Lord of the Rings" }])
|
|
7
7
|
# Character.create(name: "Luke", movie: movies.first)
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Admin::User.create(email: "admin@example.com", password: "Password9957", password_confirmation: "Password9957")
|
|
@@ -3,13 +3,13 @@ require "test_helper"
|
|
|
3
3
|
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
|
|
4
4
|
driven_by :selenium, using: :chrome, screen_size: [1400, 1400]
|
|
5
5
|
|
|
6
|
-
def
|
|
6
|
+
def sign_in_admin_as(user)
|
|
7
7
|
visit admin_sign_in_url
|
|
8
8
|
fill_in :email, with: user.email
|
|
9
9
|
fill_in :password, with: "Secret1*3*5*"
|
|
10
10
|
click_on "Sign in"
|
|
11
11
|
assert_current_path admin_url
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
user
|
|
14
14
|
end
|
|
15
15
|
end
|
|
@@ -18,7 +18,7 @@ class Admin::PasswordResetsControllerTest < ActionDispatch::IntegrationTest
|
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
test "should send a password reset email" do
|
|
21
|
-
assert_enqueued_email_with Admin::UserMailer, :
|
|
21
|
+
assert_enqueued_email_with Admin::UserMailer, :password_reset, args: { admin_user: @admin_user } do
|
|
22
22
|
post admin_password_reset_url, params: { email: @admin_user.email }
|
|
23
23
|
end
|
|
24
24
|
|
data/lib/generators/admin/install/templates/test_unit/controllers/admin/users_controller_test.rb
CHANGED
|
@@ -2,7 +2,7 @@ require "test_helper"
|
|
|
2
2
|
|
|
3
3
|
class Admin::UsersControllerTest < ActionDispatch::IntegrationTest
|
|
4
4
|
setup do
|
|
5
|
-
@admin_user =
|
|
5
|
+
@admin_user = sign_in_admin_as(admin_users(:lazaro_nixon))
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
test "should get index" do
|
|
@@ -16,11 +16,11 @@ class Admin::UsersControllerTest < ActionDispatch::IntegrationTest
|
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
test "should create admin_user" do
|
|
19
|
-
assert_difference("
|
|
20
|
-
post admin_users_url, params: { admin_user: { email: "lazaronixon@hey.com", password: "Secret1*3*5*", password_confirmation: "Secret1*3*5*"} }
|
|
19
|
+
assert_difference("Admin::User.count") do
|
|
20
|
+
post admin_users_url, params: { admin_user: { email: "lazaronixon@hey.com", password: "Secret1*3*5*", password_confirmation: "Secret1*3*5*" } }
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
-
assert_redirected_to admin_user_url(
|
|
23
|
+
assert_redirected_to admin_user_url(Admin::User.last)
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
test "should show admin_user" do
|
|
@@ -39,7 +39,7 @@ class Admin::UsersControllerTest < ActionDispatch::IntegrationTest
|
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
test "should destroy admin_user" do
|
|
42
|
-
assert_difference("
|
|
42
|
+
assert_difference("Admin::User.count", -1) do
|
|
43
43
|
delete admin_user_url(@admin_user)
|
|
44
44
|
end
|
|
45
45
|
|
|
@@ -2,41 +2,41 @@ require "application_system_test_case"
|
|
|
2
2
|
|
|
3
3
|
class Admin::UsersTest < ApplicationSystemTestCase
|
|
4
4
|
setup do
|
|
5
|
-
@admin_user =
|
|
5
|
+
@admin_user = sign_in_admin_as(admin_users(:lazaro_nixon))
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
test "visiting the index" do
|
|
9
9
|
visit admin_users_url
|
|
10
|
-
assert_selector "h2", text: "
|
|
10
|
+
assert_selector "h2", text: "Users"
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
test "should create user" do
|
|
14
14
|
visit admin_users_url
|
|
15
|
-
click_on "New
|
|
15
|
+
click_on "New user"
|
|
16
16
|
|
|
17
17
|
fill_in "Email", with: "lazaronixon@hey.com"
|
|
18
18
|
fill_in "Password", with: "Secret1*3*5*"
|
|
19
19
|
fill_in "Password confirmation", with: "Secret1*3*5*"
|
|
20
|
-
click_on "Create
|
|
20
|
+
click_on "Create User"
|
|
21
21
|
|
|
22
22
|
assert_text "User was successfully created"
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
-
test "should update
|
|
25
|
+
test "should update user" do
|
|
26
26
|
visit admin_user_url(@admin_user)
|
|
27
|
-
click_on "Edit
|
|
27
|
+
click_on "Edit user"
|
|
28
28
|
|
|
29
29
|
fill_in "Email", with: @admin_user.email
|
|
30
30
|
fill_in "Password", with: "NewSecret1*3*5*"
|
|
31
31
|
fill_in "Password confirmation", with: "NewSecret1*3*5*"
|
|
32
|
-
click_on "Update
|
|
32
|
+
click_on "Update User"
|
|
33
33
|
|
|
34
34
|
assert_text "User was successfully updated"
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
-
test "should destroy
|
|
37
|
+
test "should destroy user" do
|
|
38
38
|
visit admin_user_url(@admin_user)
|
|
39
|
-
page.accept_confirm { click_on "Delete
|
|
39
|
+
page.accept_confirm { click_on "Delete user" }
|
|
40
40
|
|
|
41
41
|
assert_text "User was successfully destroyed"
|
|
42
42
|
end
|
|
@@ -10,7 +10,7 @@ class ActiveSupport::TestCase
|
|
|
10
10
|
fixtures :all
|
|
11
11
|
|
|
12
12
|
# Add more helper methods to be used by all tests here...
|
|
13
|
-
def
|
|
13
|
+
def sign_in_admin_as(user)
|
|
14
14
|
post(admin_sign_in_url, params: { email: user.email, password: "Secret1*3*5*" }); user
|
|
15
15
|
end
|
|
16
16
|
end
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
<td>
|
|
40
40
|
<%%= link_to "View", <%= model_resource_name %>, class: "btn btn-light btn-sm" %>
|
|
41
41
|
<%%= link_to "Edit", <%= edit_helper(singular_table_name, type: :path) %>, class: "btn btn-light btn-sm" %>
|
|
42
|
-
<%%= button_to "Delete", <%= model_resource_name %>, method: :delete, form_class: "d-inline", class: "btn btn-light btn-sm"
|
|
42
|
+
<%%= button_to "Delete", <%= model_resource_name %>, method: :delete, "data-confirm": "Are you sure?", form_class: "d-inline", class: "btn btn-light btn-sm" %>
|
|
43
43
|
</td>
|
|
44
44
|
</tr>
|
|
45
45
|
<%% end %>
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
<div class="card-footer d-flex align-items-center fs-5">
|
|
50
50
|
<div class="d-none d-md-block">
|
|
51
51
|
<div>Download: <%%= link_to "CSV", <%= index_helper(type: :path) %>(format: :csv, q: request.params[:q]) %></div>
|
|
52
|
-
|
|
52
|
+
<%%= raw pagy_info(@pagy) %>
|
|
53
53
|
</div>
|
|
54
54
|
<div class="ms-auto">
|
|
55
55
|
<%%= render "pagination", pagy: @pagy %>
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
<%%= render "page_header_actions" do %>
|
|
8
8
|
<%%= link_to "Edit <%= human_name.downcase %>", <%= edit_helper(type: :path) %>, class: "btn btn-primary" %>
|
|
9
|
-
<%%= button_to "Delete <%= human_name.downcase %>", <%= model_resource_name(prefix: "@") %>, method: :delete, form_class: "d-inline", class: "btn btn-light"
|
|
9
|
+
<%%= button_to "Delete <%= human_name.downcase %>", <%= model_resource_name(prefix: "@") %>, method: :delete, "data-confirm": "Are you sure?", form_class: "d-inline", class: "btn btn-light" %>
|
|
10
10
|
<%% end %>
|
|
11
11
|
<%% end %>
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@ class <%= controller_class_name %>ControllerTest < ActionDispatch::IntegrationTe
|
|
|
6
6
|
|
|
7
7
|
<%- end -%>
|
|
8
8
|
setup do
|
|
9
|
-
@admin_user =
|
|
9
|
+
@admin_user = sign_in_admin_as admin_users(:lazaro_nixon)
|
|
10
10
|
@<%= singular_table_name %> = <%= fixture_name %>(:one)
|
|
11
11
|
end
|
|
12
12
|
|
|
@@ -2,7 +2,7 @@ require "application_system_test_case"
|
|
|
2
2
|
|
|
3
3
|
class <%= class_name.pluralize %>Test < ApplicationSystemTestCase
|
|
4
4
|
setup do
|
|
5
|
-
@admin_user =
|
|
5
|
+
@admin_user = sign_in_admin_as(admin_users(:lazaro_nixon))
|
|
6
6
|
@<%= singular_table_name %> = <%= fixture_name %>(:one)
|
|
7
7
|
end
|
|
8
8
|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: administration-zero
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.11
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nixon
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-
|
|
11
|
+
date: 2022-05-08 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description:
|
|
14
14
|
email:
|
|
@@ -19,6 +19,7 @@ extra_rdoc_files: []
|
|
|
19
19
|
files:
|
|
20
20
|
- ".documentation/screenshot.png"
|
|
21
21
|
- ".gitignore"
|
|
22
|
+
- ".rubocop.yml"
|
|
22
23
|
- CHANGELOG.md
|
|
23
24
|
- CODE_OF_CONDUCT.md
|
|
24
25
|
- Gemfile
|
|
@@ -51,8 +52,8 @@ files:
|
|
|
51
52
|
- lib/generators/admin/install/templates/erb/admin/password_resets/edit.html.erb
|
|
52
53
|
- lib/generators/admin/install/templates/erb/admin/password_resets/new.html.erb
|
|
53
54
|
- lib/generators/admin/install/templates/erb/admin/sessions/new.html.erb
|
|
54
|
-
- lib/generators/admin/install/templates/erb/admin/user_mailer/
|
|
55
|
-
- lib/generators/admin/install/templates/erb/admin/user_mailer/
|
|
55
|
+
- lib/generators/admin/install/templates/erb/admin/user_mailer/password_reset.html.erb
|
|
56
|
+
- lib/generators/admin/install/templates/erb/admin/user_mailer/password_reset.text.erb
|
|
56
57
|
- lib/generators/admin/install/templates/erb/admin/users/_form.html.erb
|
|
57
58
|
- lib/generators/admin/install/templates/erb/admin/users/edit.html.erb
|
|
58
59
|
- lib/generators/admin/install/templates/erb/admin/users/index.html.erb
|
|
@@ -63,10 +64,12 @@ files:
|
|
|
63
64
|
- lib/generators/admin/install/templates/helpers/admin/application_helper.rb
|
|
64
65
|
- lib/generators/admin/install/templates/images/admin/000m.jpg
|
|
65
66
|
- lib/generators/admin/install/templates/images/admin/logo.svg
|
|
67
|
+
- lib/generators/admin/install/templates/mailers/admin/application_mailer.rb
|
|
66
68
|
- lib/generators/admin/install/templates/mailers/admin/user_mailer.rb
|
|
67
69
|
- lib/generators/admin/install/templates/migrations/create_admin_users.rb.tt
|
|
70
|
+
- lib/generators/admin/install/templates/models/admin/application_record.rb
|
|
68
71
|
- lib/generators/admin/install/templates/models/admin/current.rb
|
|
69
|
-
- lib/generators/admin/install/templates/models/
|
|
72
|
+
- lib/generators/admin/install/templates/models/admin/user.rb
|
|
70
73
|
- lib/generators/admin/install/templates/models/application_record.rb
|
|
71
74
|
- lib/generators/admin/install/templates/seeds.rb
|
|
72
75
|
- lib/generators/admin/install/templates/test_unit/admin_users.yml
|
data/lib/generators/admin/install/templates/erb/admin/user_mailer/password_reset_provision.html.erb
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
<p>Hey there,</p>
|
|
2
|
-
|
|
3
|
-
<p>Can't remember your password for <strong><%= @admin_user.email %></strong>? That's OK, it happens. Just hit the link below to set a new one.</p>
|
|
4
|
-
|
|
5
|
-
<p><%= link_to "Reset my password", edit_admin_password_reset_url(token: @signed_id) %></p>
|
|
6
|
-
|
|
7
|
-
<p>If you did not request a password reset you can safely ignore this email, it expires in 20 minutes. Only someone with access to this email account can reset your password.</p>
|
|
8
|
-
|
|
9
|
-
<hr>
|
|
10
|
-
|
|
11
|
-
<p>Have questions or need help? Just reply to this email and our support team will help you sort it out.</p>
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
class AdminUser < ApplicationRecord
|
|
2
|
-
include SpreadsheetArchitect
|
|
3
|
-
|
|
4
|
-
has_secure_password
|
|
5
|
-
|
|
6
|
-
validates :email, presence: true, uniqueness: true
|
|
7
|
-
validates_format_of :email, with: /\A[^@\s]+@[^@\s]+\z/
|
|
8
|
-
|
|
9
|
-
validates_length_of :password, minimum: 12, allow_nil: true
|
|
10
|
-
validates_format_of :password, with: /(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])/, allow_nil: true, message: "might easily be guessed"
|
|
11
|
-
|
|
12
|
-
before_validation do
|
|
13
|
-
self.email = email.downcase.strip
|
|
14
|
-
end
|
|
15
|
-
end
|