administration-zero 0.0.8 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +15 -0
  3. data/Gemfile.lock +1 -1
  4. data/README.md +3 -5
  5. data/lib/administration_zero/version.rb +1 -1
  6. data/lib/generators/admin/install/install_generator.rb +1 -2
  7. data/lib/generators/admin/install/templates/controllers/admin/application_controller.rb +1 -1
  8. data/lib/generators/admin/install/templates/controllers/admin/password_resets_controller.rb +3 -3
  9. data/lib/generators/admin/install/templates/controllers/admin/sessions_controller.rb +2 -3
  10. data/lib/generators/admin/install/templates/controllers/admin/users_controller.rb +4 -4
  11. data/lib/generators/admin/install/templates/erb/admin/application/_flash_messages.html.erb +8 -8
  12. data/lib/generators/admin/install/templates/erb/admin/application/_page_header_breadcrumb.html.erb +2 -2
  13. data/lib/generators/admin/install/templates/erb/admin/application/_secondary_navbar.html.erb +1 -1
  14. data/lib/generators/admin/install/templates/erb/admin/password_resets/edit.html.erb +1 -1
  15. data/lib/generators/admin/install/templates/erb/admin/password_resets/new.html.erb +1 -1
  16. data/lib/generators/admin/install/templates/erb/admin/sessions/new.html.erb +1 -1
  17. data/lib/generators/admin/install/templates/erb/admin/user_mailer/password_reset.html.erb +14 -0
  18. data/lib/generators/admin/install/templates/erb/admin/user_mailer/{password_reset_provision.text.erb → password_reset.text.erb} +0 -0
  19. data/lib/generators/admin/install/templates/erb/admin/users/edit.html.erb +2 -2
  20. data/lib/generators/admin/install/templates/erb/admin/users/index.html.erb +5 -5
  21. data/lib/generators/admin/install/templates/erb/admin/users/new.html.erb +2 -2
  22. data/lib/generators/admin/install/templates/erb/admin/users/show.html.erb +4 -4
  23. data/lib/generators/admin/install/templates/helpers/admin/application_helper.rb +1 -1
  24. data/lib/generators/admin/install/templates/mailers/admin/application_mailer.rb +3 -0
  25. data/lib/generators/admin/install/templates/mailers/admin/user_mailer.rb +2 -2
  26. data/lib/generators/admin/install/templates/migrations/create_admin_users.rb.tt +2 -2
  27. data/lib/generators/admin/install/templates/models/admin/application_record.rb +3 -0
  28. data/lib/generators/admin/install/templates/models/admin/user.rb +10 -0
  29. data/lib/generators/admin/install/templates/seeds.rb +1 -1
  30. data/lib/generators/admin/install/templates/test_unit/application_system_test_case.rb +2 -2
  31. data/lib/generators/admin/install/templates/test_unit/controllers/admin/home_controller_test.rb +1 -1
  32. data/lib/generators/admin/install/templates/test_unit/controllers/admin/password_resets_controller_test.rb +1 -1
  33. data/lib/generators/admin/install/templates/test_unit/controllers/admin/sessions_controller_test.rb +1 -1
  34. data/lib/generators/admin/install/templates/test_unit/controllers/admin/users_controller_test.rb +5 -5
  35. data/lib/generators/admin/install/templates/test_unit/system/admin/sessions_test.rb +1 -1
  36. data/lib/generators/admin/install/templates/test_unit/system/admin/users_test.rb +9 -9
  37. data/lib/generators/admin/install/templates/test_unit/test_helper.rb +1 -1
  38. data/lib/generators/admin/scaffold/templates/erb/index.html.erb.tt +2 -2
  39. data/lib/generators/admin/scaffold/templates/erb/show.html.erb.tt +1 -1
  40. data/lib/generators/admin/scaffold/templates/functional_test.rb.tt +1 -1
  41. data/lib/generators/admin/scaffold/templates/system_test.rb.tt +1 -1
  42. metadata +8 -5
  43. data/lib/generators/admin/install/templates/erb/admin/user_mailer/password_reset_provision.html.erb +0 -11
  44. 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: 5c9bc430475641b273d9dc02e7e8883e74ee96c0987ce740486d26fb40812383
4
- data.tar.gz: 9b6c6828929533f9265bcf3efc9ea7c82c7533713a7d5fc645f75464e77169c3
3
+ metadata.gz: dfad604f4745dd7570ce2d3312be76883c4628d78b68f9cf73e895524e3a5b09
4
+ data.tar.gz: 8075becb0053683c3829418f3638203ec18e68c8457889e991d0f00330272c79
5
5
  SHA512:
6
- metadata.gz: b38673e793e5aebce3a1e379ab90e5870f26a1003f54299b283040341900b264e5c1448e645281795397a0c51c6e153f03a56f1cc61299e613d0588e2a47e5d6
7
- data.tar.gz: 10f3e5d7d1cd05de057f6957da986ffffb00c506d6d0a6b493dece7fde760387a368010dadeeba9ac1c25e5d519b6480edfc129a9baaab4b6a7aab6c537d4d7b
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
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- administration-zero (0.0.8)
4
+ administration-zero (0.0.11)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
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
- $ rails generate model posts title:string body:text published:boolean
30
+ rails generate model posts title:string body:text published:boolean
31
31
  ```
32
32
 
33
33
  ## Usage
34
34
 
35
35
  ```
36
- $ rails generate admin:install
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
- $ rails generate admin:scaffold posts title:string body:text published:boolean
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
@@ -1,3 +1,3 @@
1
1
  module AdministrationZero
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.11"
3
3
  end
@@ -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/admin_users.yml"
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 = AdminUser.find_by_id(session[:admin_user_id])
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 = AdminUser.find_by(email: params[:email])
16
- Admin::UserMailer.with(admin_user: @admin_user).password_reset_provision.deliver_later
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 = AdminUser.find_signed!(params[:token], purpose: :password_reset)
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 = AdminUser.new
7
+ @admin_user = Admin::User.new
8
8
  end
9
9
 
10
10
  def create
11
- @admin_user = AdminUser.find_by(email: params[:email])
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 = AdminUser.all.ransack(params[:q])
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 = AdminUser.new
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 = AdminUser.new(admin_user_params)
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 = AdminUser.find(params[:id])
48
+ @admin_user = Admin::User.find(params[:id])
49
49
  end
50
50
 
51
51
  def admin_user_params
@@ -1,11 +1,11 @@
1
- <% flash.each do |type, message| %>
2
- <% if ["notice", "alert"].include?(type) %>
3
- <div class="position-fixed start-50 translate-middle-x" style="z-index: 1030; top: 8rem;">
4
- <div class="toast hide text-center text-white bg-dark border-0" data-controller="flash-message">
5
- <div class="toast-body">
6
- <%= message %>
7
- </div>
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
- <% end %>
10
+ </div>
11
11
  <% end %>
@@ -6,7 +6,7 @@
6
6
  <%= yield %>
7
7
  </ol>
8
8
  </div>
9
- <h2 class="page-title">
9
+ <h1 class="page-title">
10
10
  <span class="text-truncate"><%= title %></span>
11
- </h2>
11
+ </h1>
12
12
  </div>
@@ -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
- Admin users
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
- <h2 class="card-title text-center mb-4">Reset password</h2>
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
- <h2 class="card-title text-center mb-4">Forgot password</h2>
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
- <h2 class="card-title text-center mb-4">Login to your account</h2>
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>
@@ -1,7 +1,7 @@
1
1
  <%= render "page_header" do %>
2
- <%= render "page_header_breadcrumb", title: "Editing admin user" do %>
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 "Admin users", admin_users_path %></li>
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: "Admin users" do %>
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 admin user", new_admin_user_path, class: "btn btn-primary" %>
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: { confirm: "Are you sure ?" }, form_class: "d-inline", class: "btn btn-light btn-sm" %>
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", admin_posts_path(format: :csv, q: request.params[:q]) %></div>
44
- <%== pagy_info @pagy %>
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 admin user" do %>
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 "Admin users", admin_users_path %></li>
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 "Admin users", admin_users_path %></li>
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 admin user", edit_admin_user_path(@admin_user), class: "btn btn-primary" %>
9
- <%= button_to "Delete admin user", @admin_user, method: :delete, data: { confirm: "Are you sure ?" }, form_class: "d-inline", class: "btn btn-light" %>
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">Admin user details</h3>
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('::').first
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))
@@ -0,0 +1,3 @@
1
+ class Admin::ApplicationMailer < ActionMailer::Base
2
+ default from: "from@example.com"
3
+ end
@@ -1,5 +1,5 @@
1
- class Admin::UserMailer < ApplicationMailer
2
- def password_reset_provision
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,3 @@
1
+ class Admin::ApplicationRecord < ActiveRecord::Base
2
+ include SpreadsheetArchitect; self.abstract_class = true; self.table_name_prefix = "admin_"
3
+ 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
- AdminUser.create(email: "admin@example.com", password: "Password9957", password_confirmation: "Password9957")
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 admin_sign_in_as(user)
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
- return user
13
+ user
14
14
  end
15
15
  end
@@ -2,7 +2,7 @@ require "test_helper"
2
2
 
3
3
  class Admin::HomeControllerTest < ActionDispatch::IntegrationTest
4
4
  setup do
5
- @admin_user = admin_sign_in_as(admin_users(:lazaro_nixon))
5
+ @admin_user = sign_in_admin_as(admin_users(:lazaro_nixon))
6
6
  end
7
7
 
8
8
  test "should get index" do
@@ -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, :password_reset_provision, args: { admin_user: @admin_user } do
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
 
@@ -28,7 +28,7 @@ class Admin::SessionsControllerTest < ActionDispatch::IntegrationTest
28
28
  end
29
29
 
30
30
  test "should sign out" do
31
- admin_sign_in_as @admin_user
31
+ sign_in_admin_as @admin_user
32
32
 
33
33
  delete admin_sign_out_url
34
34
  assert_redirected_to admin_sign_in_url
@@ -2,7 +2,7 @@ require "test_helper"
2
2
 
3
3
  class Admin::UsersControllerTest < ActionDispatch::IntegrationTest
4
4
  setup do
5
- @admin_user = admin_sign_in_as(admin_users(:lazaro_nixon))
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("AdminUser.count") do
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(AdminUser.last)
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("AdminUser.count", -1) do
42
+ assert_difference("Admin::User.count", -1) do
43
43
  delete admin_user_url(@admin_user)
44
44
  end
45
45
 
@@ -15,7 +15,7 @@ class Admin::SessionsTest < ApplicationSystemTestCase
15
15
  end
16
16
 
17
17
  test "signing out" do
18
- admin_sign_in_as @admin_user
18
+ sign_in_admin_as @admin_user
19
19
  click_on "Paweł Kuna"
20
20
  click_on "Logout"
21
21
 
@@ -2,41 +2,41 @@ require "application_system_test_case"
2
2
 
3
3
  class Admin::UsersTest < ApplicationSystemTestCase
4
4
  setup do
5
- @admin_user = admin_sign_in_as(admin_users(:lazaro_nixon))
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: "Admin users"
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 admin user"
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 Admin user"
20
+ click_on "Create User"
21
21
 
22
22
  assert_text "User was successfully created"
23
23
  end
24
24
 
25
- test "should update User" do
25
+ test "should update user" do
26
26
  visit admin_user_url(@admin_user)
27
- click_on "Edit admin user"
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 Admin user"
32
+ click_on "Update User"
33
33
 
34
34
  assert_text "User was successfully updated"
35
35
  end
36
36
 
37
- test "should destroy User" do
37
+ test "should destroy user" do
38
38
  visit admin_user_url(@admin_user)
39
- page.accept_confirm { click_on "Delete admin user" }
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 admin_sign_in_as(user)
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", data: { confirm: "Are you sure ?" } %>
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
- <%%== pagy_info @pagy %>
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", data: { confirm: "Are you sure ?" } %>
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 = admin_sign_in_as admin_users(:lazaro_nixon)
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 = admin_sign_in_as(admin_users(:lazaro_nixon))
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.8
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-03-10 00:00:00.000000000 Z
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/password_reset_provision.html.erb
55
- - lib/generators/admin/install/templates/erb/admin/user_mailer/password_reset_provision.text.erb
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/admin_user.rb
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
@@ -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