authentication-zero 2.11.1 → 2.12.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/Gemfile.lock +1 -1
  4. data/README.md +3 -1
  5. data/authentication-zero-api.md +1 -16
  6. data/lib/authentication_zero/version.rb +1 -1
  7. data/lib/generators/authentication/USAGE +1 -1
  8. data/lib/generators/authentication/authentication_generator.rb +20 -15
  9. data/lib/generators/authentication/templates/controllers/api/authentications/events_controller.rb.tt +1 -1
  10. data/lib/generators/authentication/templates/controllers/api/identity/email_verifications_controller.rb.tt +16 -6
  11. data/lib/generators/authentication/templates/controllers/api/identity/emails_controller.rb.tt +15 -8
  12. data/lib/generators/authentication/templates/controllers/api/identity/password_resets_controller.rb.tt +9 -9
  13. data/lib/generators/authentication/templates/controllers/api/passwords_controller.rb.tt +8 -8
  14. data/lib/generators/authentication/templates/controllers/api/registrations_controller.rb.tt +8 -5
  15. data/lib/generators/authentication/templates/controllers/api/sessions/sudos_controller.rb.tt +1 -1
  16. data/lib/generators/authentication/templates/controllers/api/sessions_controller.rb.tt +6 -6
  17. data/lib/generators/authentication/templates/controllers/html/authentications/events_controller.rb.tt +1 -1
  18. data/lib/generators/authentication/templates/controllers/html/identity/email_verifications_controller.rb.tt +5 -5
  19. data/lib/generators/authentication/templates/controllers/html/identity/emails_controller.rb.tt +13 -6
  20. data/lib/generators/authentication/templates/controllers/html/identity/password_resets_controller.rb.tt +7 -7
  21. data/lib/generators/authentication/templates/controllers/html/passwords_controller.rb.tt +6 -6
  22. data/lib/generators/authentication/templates/controllers/html/registrations_controller.rb.tt +5 -5
  23. data/lib/generators/authentication/templates/controllers/html/sessions/omniauth_controller.rb.tt +4 -4
  24. data/lib/generators/authentication/templates/controllers/html/sessions/sudos_controller.rb.tt +2 -2
  25. data/lib/generators/authentication/templates/controllers/html/sessions_controller.rb.tt +9 -9
  26. data/lib/generators/authentication/templates/controllers/html/two_factor_authentication/challenges_controller.rb.tt +5 -5
  27. data/lib/generators/authentication/templates/controllers/html/two_factor_authentication/totps_controller.rb.tt +13 -6
  28. data/lib/generators/authentication/templates/erb/authentications/events/{index.html.erb → index.html.erb.tt} +8 -8
  29. data/lib/generators/authentication/templates/erb/identity/emails/edit.html.erb.tt +6 -4
  30. data/lib/generators/authentication/templates/erb/identity/password_resets/edit.html.erb.tt +3 -3
  31. data/lib/generators/authentication/templates/erb/passwords/edit.html.erb.tt +3 -3
  32. data/lib/generators/authentication/templates/erb/registrations/new.html.erb.tt +3 -3
  33. data/lib/generators/authentication/templates/erb/session_mailer/signed_in_notification.html.erb.tt +1 -1
  34. data/lib/generators/authentication/templates/erb/session_mailer/signed_in_notification.text.erb.tt +1 -1
  35. data/lib/generators/authentication/templates/erb/sessions/new.html.erb.tt +3 -2
  36. data/lib/generators/authentication/templates/erb/two_factor_authentication/totps/new.html.erb.tt +2 -0
  37. data/lib/generators/authentication/templates/erb/user_mailer/email_verify_confirmation.html.erb.tt +15 -0
  38. data/lib/generators/authentication/templates/erb/user_mailer/email_verify_confirmation.text.erb.tt +13 -0
  39. data/lib/generators/authentication/templates/erb/{identity_mailer → user_mailer}/password_reset_provision.html.erb.tt +1 -1
  40. data/lib/generators/authentication/templates/erb/{identity_mailer → user_mailer}/password_reset_provision.text.erb.tt +1 -1
  41. data/lib/generators/authentication/templates/mailers/session_mailer.rb.tt +1 -1
  42. data/lib/generators/authentication/templates/mailers/user_mailer.rb.tt +19 -0
  43. data/lib/generators/authentication/templates/migrations/create_events_migration.rb.tt +1 -1
  44. data/lib/generators/authentication/templates/migrations/create_sessions_migration.rb.tt +1 -1
  45. data/lib/generators/authentication/templates/migrations/{create_table_migration.rb.tt → create_users_migration.rb.tt} +3 -3
  46. data/lib/generators/authentication/templates/models/current.rb.tt +2 -2
  47. data/lib/generators/authentication/templates/models/event.rb.tt +1 -1
  48. data/lib/generators/authentication/templates/models/session.rb.tt +3 -3
  49. data/lib/generators/authentication/templates/models/{model.rb.tt → user.rb.tt} +5 -2
  50. data/lib/generators/authentication/templates/test_unit/application_system_test_case.rb.tt +3 -3
  51. data/lib/generators/authentication/templates/test_unit/controllers/api/identity/email_verifications_controller_test.rb.tt +9 -9
  52. data/lib/generators/authentication/templates/test_unit/controllers/api/identity/emails_controller_test.rb.tt +1 -1
  53. data/lib/generators/authentication/templates/test_unit/controllers/api/identity/password_resets_controller_test.rb.tt +7 -7
  54. data/lib/generators/authentication/templates/test_unit/controllers/api/passwords_controller_test.rb.tt +1 -1
  55. data/lib/generators/authentication/templates/test_unit/controllers/api/registrations_controller_test.rb.tt +1 -1
  56. data/lib/generators/authentication/templates/test_unit/controllers/api/sessions_controller_test.rb.tt +6 -6
  57. data/lib/generators/authentication/templates/test_unit/controllers/html/identity/email_verifications_controller_test.rb.tt +9 -9
  58. data/lib/generators/authentication/templates/test_unit/controllers/html/identity/emails_controller_test.rb.tt +1 -1
  59. data/lib/generators/authentication/templates/test_unit/controllers/html/identity/password_resets_controller_test.rb.tt +7 -7
  60. data/lib/generators/authentication/templates/test_unit/controllers/html/passwords_controller_test.rb.tt +1 -1
  61. data/lib/generators/authentication/templates/test_unit/controllers/html/registrations_controller_test.rb.tt +1 -1
  62. data/lib/generators/authentication/templates/test_unit/controllers/html/sessions_controller_test.rb.tt +8 -8
  63. data/lib/generators/authentication/templates/test_unit/system/identity/emails_test.rb.tt +2 -2
  64. data/lib/generators/authentication/templates/test_unit/system/identity/password_resets_test.rb.tt +3 -3
  65. data/lib/generators/authentication/templates/test_unit/system/passwords_test.rb.tt +1 -1
  66. data/lib/generators/authentication/templates/test_unit/system/sessions_test.rb.tt +4 -4
  67. data/lib/generators/authentication/templates/test_unit/test_helper.rb.tt +4 -4
  68. data/lib/generators/authentication/templates/test_unit/{fixtures.yml.tt → users.yml.tt} +0 -0
  69. metadata +11 -11
  70. data/lib/generators/authentication/templates/erb/identity_mailer/email_verify_confirmation.html.erb.tt +0 -11
  71. data/lib/generators/authentication/templates/erb/identity_mailer/email_verify_confirmation.text.erb.tt +0 -9
  72. data/lib/generators/authentication/templates/mailers/identity_mailer.rb.tt +0 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 26344aaefae4e99ea2048950089e5927a62d473f85d94596456006d6edbbc8ee
4
- data.tar.gz: eebff7007c4754244993ac76b022081ccbd0201dac5cd1611ec84f8845e7a5d0
3
+ metadata.gz: 5a4a255a118044ab6bdcf5af654088a4636a027db4d5652401087275cc14609e
4
+ data.tar.gz: 935d89fb3cd66416f7bcc9932dfa8d097fd2d103e6577ed59f728bb6568d99fd
5
5
  SHA512:
6
- metadata.gz: 6ccd04a438745b60d071c9203c5e36588b01333a17e37a5ee1067c7007824d52fb2a3be0c5e4864868c393f9dec04e2284487651f7d7b0f908c238dcbf4a9dd2
7
- data.tar.gz: 51b53ff133cdf9a69e42f29cadd19127646d6c98a6d476c1565c5e6151708b57f4076e1f19af4f4335b8bd6a08ac90b9328b6fe393f85d702dd7d415621a9c8a
6
+ metadata.gz: 1479fde381e5a5f5f1cbd58aa8847dcf83d9ba32a6d474b239a44df5e25fea18bd758bb022112813b00890c573e55ad50ffc8f586c84531fc58b98a143a5c3c2
7
+ data.tar.gz: e6452d39abad6ace236c4ab6e418b6f5fe313fc4413adf558a49893d70ef63fbb5416e601fe01d26477b379654bc135e30f2f978fce6aa7f8cb2979bf3d7e388
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## Authentication Zero 2.12.0 (March 28, 2022) ##
2
+
3
+ * Remove model option from generator
4
+
1
5
  ## Authentication Zero 2.11.0 (March 27, 2022) ##
2
6
 
3
7
  * Remove sudo from default generator
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- authentication-zero (2.11.1)
4
+ authentication-zero (2.12.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -13,6 +13,8 @@ The purpose of authentication zero is to generate a pre-built authentication sys
13
13
  - Authentication by token (--api)
14
14
  - Two factor authentication (--two-factor)
15
15
  - Social Login with OmniAuth (--omniauthable)
16
+ - Verify email using a link with token
17
+ - Verify email using a six random digits code for api (--code-verifiable)
16
18
  - Ask password before sensitive data changes, aka: sudo (--sudoable)
17
19
  - Reset the user password and send reset instructions
18
20
  - Reset the user password only from verified emails
@@ -98,7 +100,7 @@ config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
98
100
  ## Usage
99
101
 
100
102
  ```
101
- rails generate authentication user
103
+ rails generate authentication
102
104
  ```
103
105
 
104
106
  Then run `bundle install` again!
@@ -21,7 +21,6 @@ curl -H "Authorization: Bearer $ACCESS_TOKEN" \
21
21
  - [Get your sessions](#get-your-sessions)
22
22
  - [Get a session](#get-a-session)
23
23
  - [Destroy a session](#destroy-a-session)
24
- - [Execute sudo](#execute-sudo)
25
24
  - [Update your password](#update-your-password)
26
25
  - [Update your email](#update-your-email)
27
26
  - [Send verification email](#send-verification-email)
@@ -115,21 +114,6 @@ This endpoint will return `201 Created` with the current JSON representation of
115
114
 
116
115
  Returns `204 No Content` if successful.
117
116
 
118
-
119
- ### Execute sudo
120
-
121
- * `POST /sessions/sudo` will grant temporary access to sensitive information.
122
-
123
- ###### Example JSON Request
124
-
125
- ``` json
126
- {
127
- "password": "Secret1*2*3*4*5*6",
128
- }
129
- ```
130
-
131
- Returns `204 No Content` if successful.
132
-
133
117
  ## Password
134
118
 
135
119
  ### Update your password
@@ -158,6 +142,7 @@ This endpoint will return 200 OK with the current JSON representation of the use
158
142
 
159
143
  ``` json
160
144
  {
145
+ "current_password": "Secret1*2*3*4*5*6",
161
146
  "email": "new_email@hey.com"
162
147
  }
163
148
  ```
@@ -1,3 +1,3 @@
1
1
  module AuthenticationZero
2
- VERSION = "2.11.1"
2
+ VERSION = "2.12.1"
3
3
  end
@@ -8,4 +8,4 @@ Description:
8
8
  to modify the authentication system so it works best with their app.
9
9
 
10
10
  Example:
11
- bin/rails generate authentication user
11
+ bin/rails generate authentication
@@ -1,16 +1,17 @@
1
1
  require "rails/generators/active_record"
2
2
 
3
- class AuthenticationGenerator < Rails::Generators::NamedBase
3
+ class AuthenticationGenerator < Rails::Generators::Base
4
4
  include ActiveRecord::Generators::Migration
5
5
 
6
- class_option :api, type: :boolean, desc: "Generates API authentication"
7
- class_option :pwned, type: :boolean, desc: "Add pwned password validation"
8
- class_option :sudoable, type: :boolean, desc: "Add password request before sensitive data changes"
9
- class_option :lockable, type: :boolean, desc: "Add password reset locking"
10
- class_option :ratelimit, type: :boolean, desc: "Add request rate limiting"
11
- class_option :omniauthable, type: :boolean, desc: "Add social login support"
12
- class_option :trackable, type: :boolean, desc: "Add activity log support"
13
- class_option :two_factor, type: :boolean, desc: "Add two factor authentication"
6
+ class_option :api, type: :boolean, desc: "Generates API authentication"
7
+ class_option :pwned, type: :boolean, desc: "Add pwned password validation"
8
+ class_option :code_verifiable, type: :boolean, desc: "Add email verification using a code for api"
9
+ class_option :sudoable, type: :boolean, desc: "Add password request before sensitive data changes"
10
+ class_option :lockable, type: :boolean, desc: "Add password reset locking"
11
+ class_option :ratelimit, type: :boolean, desc: "Add request rate limiting"
12
+ class_option :omniauthable, type: :boolean, desc: "Add social login support"
13
+ class_option :trackable, type: :boolean, desc: "Add activity log support"
14
+ class_option :two_factor, type: :boolean, desc: "Add two factor authentication"
14
15
 
15
16
  source_root File.expand_path("templates", __dir__)
16
17
 
@@ -53,13 +54,13 @@ class AuthenticationGenerator < Rails::Generators::NamedBase
53
54
  end
54
55
 
55
56
  def create_migrations
56
- migration_template "migrations/create_table_migration.rb", "#{db_migrate_path}/create_#{table_name}.rb"
57
+ migration_template "migrations/create_users_migration.rb", "#{db_migrate_path}/create_users.rb"
57
58
  migration_template "migrations/create_sessions_migration.rb", "#{db_migrate_path}/create_sessions.rb"
58
59
  migration_template "migrations/create_events_migration.rb", "#{db_migrate_path}/create_events.rb" if options.trackable?
59
60
  end
60
61
 
61
62
  def create_models
62
- template "models/model.rb", "app/models/#{file_name}.rb"
63
+ template "models/user.rb", "app/models/user.rb"
63
64
  template "models/session.rb", "app/models/session.rb"
64
65
  template "models/current.rb", "app/models/current.rb"
65
66
  template "models/locking.rb", "app/models/locking.rb" if options.lockable?
@@ -67,7 +68,7 @@ class AuthenticationGenerator < Rails::Generators::NamedBase
67
68
  end
68
69
 
69
70
  def create_fixture_file
70
- template "test_unit/fixtures.yml", "test/fixtures/#{fixture_file_name}.yml"
71
+ template "test_unit/users.yml", "test/fixtures/users.yml"
71
72
  end
72
73
 
73
74
  def create_controllers
@@ -85,10 +86,10 @@ class AuthenticationGenerator < Rails::Generators::NamedBase
85
86
 
86
87
  def create_views
87
88
  if options.api?
88
- directory "erb/identity_mailer", "app/views/identity_mailer"
89
+ directory "erb/user_mailer", "app/views/user_mailer"
89
90
  directory "erb/session_mailer", "app/views/session_mailer"
90
91
  else
91
- directory "erb/identity_mailer", "app/views/identity_mailer"
92
+ directory "erb/user_mailer", "app/views/user_mailer"
92
93
  directory "erb/session_mailer", "app/views/session_mailer"
93
94
 
94
95
  directory "erb/identity", "app/views/identity"
@@ -157,7 +158,11 @@ class AuthenticationGenerator < Rails::Generators::NamedBase
157
158
  options.two_factor? && !options.api?
158
159
  end
159
160
 
161
+ def code_verifiable?
162
+ options.code_verifiable? && options.api?
163
+ end
164
+
160
165
  def redis?
161
- options.lockable? || options.sudoable?
166
+ options.lockable? || options.sudoable? || code_verifiable?
162
167
  end
163
168
  end
@@ -1,5 +1,5 @@
1
1
  class Authentications::EventsController < ApplicationController
2
2
  def index
3
- render json: Current.<%= singular_table_name %>.events.order(created_at: :desc)
3
+ render json: Current.user.events.order(created_at: :desc)
4
4
  end
5
5
  end
@@ -1,20 +1,30 @@
1
1
  class Identity::EmailVerificationsController < ApplicationController
2
2
  skip_before_action :authenticate, only: :edit
3
3
 
4
- before_action :set_<%= singular_table_name %>, only: :edit
4
+ before_action :set_user, only: :edit
5
5
 
6
6
  def edit
7
- @<%= singular_table_name %>.update! verified: true
7
+ @user.update! verified: true
8
8
  end
9
9
 
10
10
  def create
11
- IdentityMailer.with(<%= singular_table_name %>: Current.<%= singular_table_name %>).email_verify_confirmation.deliver_later
11
+ UserMailer.with(user: Current.user).email_verify_confirmation.deliver_later
12
12
  end
13
13
 
14
14
  private
15
- def set_<%= singular_table_name %>
16
- @<%= singular_table_name %> = <%= class_name %>.where(email: params[:email]).find_signed!(params[:token], purpose: params[:email])
15
+ def set_user
16
+ <%- if code_verifiable? -%>
17
+ verified_user = User.find_by(email: params[:email])
18
+
19
+ if verified_user && verified_user.verification_code.value == params[:token]
20
+ @user = verified_user
21
+ else
22
+ render json: { error: "That email verification code is invalid" }, status: :bad_request
23
+ end
24
+ <%- else -%>
25
+ @user = User.where(email: params[:email]).find_signed!(params[:token], purpose: params[:email])
17
26
  rescue
18
27
  render json: { error: "That email verification link is invalid" }, status: :bad_request
19
- end
28
+ <%- end -%>
29
+ end
20
30
  end
@@ -1,22 +1,29 @@
1
1
  class Identity::EmailsController < ApplicationController
2
- before_action :set_<%= singular_table_name %>
2
+ <%- if options.sudoable? -%>
3
+ before_action :require_sudo
4
+ <%- end -%>
5
+ before_action :set_user
3
6
 
4
7
  def update
5
- if !@<%= singular_table_name %>.authenticate(params[:current_password])
8
+ <%- unless options.sudoable? -%>
9
+ if !@user.authenticate(params[:current_password])
6
10
  render json: { error: "The password you entered is incorrect" }, status: :bad_request
7
- elsif @<%= singular_table_name %>.update(<%= "#{singular_table_name}_params" %>)
8
- render json: @<%= singular_table_name %>
11
+ elsif @user.update(user_params)
12
+ <%- else -%>
13
+ if @user.update(user_params)
14
+ <%- end -%>
15
+ render json: @user
9
16
  else
10
- render json: @<%= singular_table_name %>.errors, status: :unprocessable_entity
17
+ render json: @user.errors, status: :unprocessable_entity
11
18
  end
12
19
  end
13
20
 
14
21
  private
15
- def set_<%= singular_table_name %>
16
- @<%= singular_table_name %> = Current.<%= singular_table_name %>
22
+ def set_user
23
+ @user = Current.user
17
24
  end
18
25
 
19
- def <%= "#{singular_table_name}_params" %>
26
+ def user_params
20
27
  params.permit(:email)
21
28
  end
22
29
  end
@@ -4,32 +4,32 @@ class Identity::PasswordResetsController < ApplicationController
4
4
  <%- if options.lockable? -%>
5
5
  before_action :require_locking, only: :create
6
6
  <%- end -%>
7
- before_action :set_<%= singular_table_name %>, only: :update
7
+ before_action :set_user, only: :update
8
8
 
9
9
  def create
10
- if @<%= singular_table_name %> = <%= class_name %>.find_by(email: params[:email], verified: true)
11
- IdentityMailer.with(<%= singular_table_name %>: @<%= singular_table_name %>).password_reset_provision.deliver_later
10
+ if @user = User.find_by(email: params[:email], verified: true)
11
+ UserMailer.with(user: @user).password_reset_provision.deliver_later
12
12
  else
13
13
  render json: { error: "You can't reset your password until you verify your email" }, status: :not_found
14
14
  end
15
15
  end
16
16
 
17
17
  def update
18
- if @<%= singular_table_name %>.update(<%= "#{singular_table_name}_params" %>)
19
- render json: @<%= singular_table_name %>
18
+ if @user.update(user_params)
19
+ render json: @user
20
20
  else
21
- render json: @<%= singular_table_name %>.errors, status: :unprocessable_entity
21
+ render json: @user.errors, status: :unprocessable_entity
22
22
  end
23
23
  end
24
24
 
25
25
  private
26
- def set_<%= singular_table_name %>
27
- @<%= singular_table_name %> = <%= class_name %>.find_signed!(params[:token], purpose: :password_reset)
26
+ def set_user
27
+ @user = User.find_signed!(params[:token], purpose: :password_reset)
28
28
  rescue
29
29
  render json: { error: "That password reset link is invalid" }, status: :bad_request
30
30
  end
31
31
 
32
- def <%= "#{singular_table_name}_params" %>
32
+ def user_params
33
33
  params.permit(:password, :password_confirmation)
34
34
  end
35
35
  <%- if options.lockable? %>
@@ -1,22 +1,22 @@
1
1
  class PasswordsController < ApplicationController
2
- before_action :set_<%= singular_table_name %>
2
+ before_action :set_user
3
3
 
4
4
  def update
5
- if !@<%= singular_table_name %>.authenticate(params[:current_password])
5
+ if !@user.authenticate(params[:current_password])
6
6
  render json: { error: "The current password you entered is incorrect" }, status: :bad_request
7
- elsif @<%= singular_table_name %>.update(<%= "#{singular_table_name}_params" %>)
8
- render json: @<%= singular_table_name %>
7
+ elsif @user.update(user_params)
8
+ render json: @user
9
9
  else
10
- render json: @<%= singular_table_name %>.errors, status: :unprocessable_entity
10
+ render json: @user.errors, status: :unprocessable_entity
11
11
  end
12
12
  end
13
13
 
14
14
  private
15
- def set_<%= singular_table_name %>
16
- @<%= singular_table_name %> = Current.<%= singular_table_name %>
15
+ def set_user
16
+ @user = Current.user
17
17
  end
18
18
 
19
- def <%= "#{singular_table_name}_params" %>
19
+ def user_params
20
20
  params.permit(:password, :password_confirmation)
21
21
  end
22
22
  end
@@ -2,17 +2,20 @@ class RegistrationsController < ApplicationController
2
2
  skip_before_action :authenticate
3
3
 
4
4
  def create
5
- @<%= singular_table_name %> = <%= class_name %>.new(<%= "#{singular_table_name}_params" %>)
5
+ @user = User.new(user_params)
6
6
 
7
- if @<%= singular_table_name %>.save
8
- render json: @<%= singular_table_name %>, status: :created
7
+ if @user.save
8
+ session = @user.sessions.create!
9
+ response.set_header "X-Session-Token", session.signed_id
10
+
11
+ render json: session, status: :created
9
12
  else
10
- render json: @<%= singular_table_name %>.errors, status: :unprocessable_entity
13
+ render json: @user.errors, status: :unprocessable_entity
11
14
  end
12
15
  end
13
16
 
14
17
  private
15
- def <%= "#{singular_table_name}_params" %>
18
+ def user_params
16
19
  params.permit(:email, :password, :password_confirmation)
17
20
  end
18
21
  end
@@ -2,7 +2,7 @@ class Sessions::SudosController < ApplicationController
2
2
  def create
3
3
  session = Current.session
4
4
 
5
- if session.<%= singular_table_name %>.authenticate(params[:password])
5
+ if session.user.authenticate(params[:password])
6
6
  session.sudo.mark
7
7
  else
8
8
  render json: { error: "The password you entered is incorrect" }, status: :bad_request
@@ -4,7 +4,7 @@ class SessionsController < ApplicationController
4
4
  before_action :set_session, only: %i[ show destroy ]
5
5
 
6
6
  def index
7
- render json: Current.<%= singular_table_name %>.sessions.order(created_at: :desc)
7
+ render json: Current.user.sessions.order(created_at: :desc)
8
8
  end
9
9
 
10
10
  def show
@@ -12,11 +12,11 @@ class SessionsController < ApplicationController
12
12
  end
13
13
 
14
14
  def create
15
- <%= singular_table_name %> = <%= class_name %>.find_by(email: params[:email])
15
+ user = User.find_by(email: params[:email])
16
16
 
17
- if <%= singular_table_name %> && <%= singular_table_name %>.authenticate(params[:password])
18
- @session = <%= singular_table_name %>.sessions.create!
19
- response.set_header("X-Session-Token", @session.signed_id)
17
+ if user && user.authenticate(params[:password])
18
+ @session = user.sessions.create!
19
+ response.set_header "X-Session-Token", @session.signed_id
20
20
 
21
21
  render json: @session, status: :created
22
22
  else
@@ -30,6 +30,6 @@ class SessionsController < ApplicationController
30
30
 
31
31
  private
32
32
  def set_session
33
- @session = Current.<%= singular_table_name %>.sessions.find(params[:id])
33
+ @session = Current.user.sessions.find(params[:id])
34
34
  end
35
35
  end
@@ -1,5 +1,5 @@
1
1
  class Authentications::EventsController < ApplicationController
2
2
  def index
3
- @events = Current.<%= singular_table_name %>.events.order(created_at: :desc)
3
+ @events = Current.user.events.order(created_at: :desc)
4
4
  end
5
5
  end
@@ -1,21 +1,21 @@
1
1
  class Identity::EmailVerificationsController < ApplicationController
2
2
  skip_before_action :authenticate, only: :edit
3
3
 
4
- before_action :set_<%= singular_table_name %>, only: :edit
4
+ before_action :set_user, only: :edit
5
5
 
6
6
  def edit
7
- @<%= singular_table_name %>.update! verified: true
7
+ @user.update! verified: true
8
8
  redirect_to root_path, notice: "Thank you for verifying your email address"
9
9
  end
10
10
 
11
11
  def create
12
- IdentityMailer.with(<%= singular_table_name %>: Current.<%= singular_table_name %>).email_verify_confirmation.deliver_later
12
+ UserMailer.with(user: Current.user).email_verify_confirmation.deliver_later
13
13
  redirect_to root_path, notice: "We sent a verification email to your email address"
14
14
  end
15
15
 
16
16
  private
17
- def set_<%= singular_table_name %>
18
- @<%= singular_table_name %> = <%= class_name %>.where(email: params[:email]).find_signed!(params[:token], purpose: params[:email])
17
+ def set_user
18
+ @user = User.where(email: params[:email]).find_signed!(params[:token], purpose: params[:email])
19
19
  rescue
20
20
  redirect_to edit_identity_email_path, alert: "That email verification link is invalid"
21
21
  end
@@ -1,13 +1,20 @@
1
1
  class Identity::EmailsController < ApplicationController
2
- before_action :set_<%= singular_table_name %>
2
+ <%- if options.sudoable? -%>
3
+ before_action :require_sudo
4
+ <%- end -%>
5
+ before_action :set_user
3
6
 
4
7
  def edit
5
8
  end
6
9
 
7
10
  def update
8
- if !@<%= singular_table_name %>.authenticate(params[:current_password])
11
+ <%- unless options.sudoable? -%>
12
+ if !@user.authenticate(params[:current_password])
9
13
  redirect_to edit_identity_email_path, alert: "The password you entered is incorrect"
10
- elsif @<%= singular_table_name %>.update(<%= "#{singular_table_name}_params" %>)
14
+ elsif @user.update(user_params)
15
+ <%- else -%>
16
+ if @user.update(user_params)
17
+ <%- end -%>
11
18
  redirect_to root_path, notice: "Your email has been changed"
12
19
  else
13
20
  render :edit, status: :unprocessable_entity
@@ -15,11 +22,11 @@ class Identity::EmailsController < ApplicationController
15
22
  end
16
23
 
17
24
  private
18
- def set_<%= singular_table_name %>
19
- @<%= singular_table_name %> = Current.<%= singular_table_name %>
25
+ def set_user
26
+ @user = Current.user
20
27
  end
21
28
 
22
- def <%= "#{singular_table_name}_params" %>
29
+ def user_params
23
30
  params.permit(:email)
24
31
  end
25
32
  end
@@ -4,7 +4,7 @@ class Identity::PasswordResetsController < ApplicationController
4
4
  <%- if options.lockable? -%>
5
5
  before_action :require_locking, only: :create
6
6
  <%- end -%>
7
- before_action :set_<%= singular_table_name %>, only: %i[ edit update ]
7
+ before_action :set_user, only: %i[ edit update ]
8
8
 
9
9
  def new
10
10
  end
@@ -13,8 +13,8 @@ class Identity::PasswordResetsController < ApplicationController
13
13
  end
14
14
 
15
15
  def create
16
- if @<%= singular_table_name %> = <%= class_name %>.find_by(email: params[:email], verified: true)
17
- IdentityMailer.with(<%= singular_table_name %>: @<%= singular_table_name %>).password_reset_provision.deliver_later
16
+ if @user = User.find_by(email: params[:email], verified: true)
17
+ UserMailer.with(user: @user).password_reset_provision.deliver_later
18
18
  redirect_to sign_in_path, notice: "Check your email for reset instructions"
19
19
  else
20
20
  redirect_to new_identity_password_reset_path, alert: "You can't reset your password until you verify your email"
@@ -22,7 +22,7 @@ class Identity::PasswordResetsController < ApplicationController
22
22
  end
23
23
 
24
24
  def update
25
- if @<%= singular_table_name %>.update(<%= "#{singular_table_name}_params" %>)
25
+ if @user.update(user_params)
26
26
  redirect_to sign_in_path, notice: "Your password was reset successfully. Please sign in"
27
27
  else
28
28
  render :edit, status: :unprocessable_entity
@@ -30,13 +30,13 @@ class Identity::PasswordResetsController < ApplicationController
30
30
  end
31
31
 
32
32
  private
33
- def set_<%= singular_table_name %>
34
- @<%= singular_table_name %> = <%= class_name %>.find_signed!(params[:token], purpose: :password_reset)
33
+ def set_user
34
+ @user = User.find_signed!(params[:token], purpose: :password_reset)
35
35
  rescue
36
36
  redirect_to new_identity_password_reset_path, alert: "That password reset link is invalid"
37
37
  end
38
38
 
39
- def <%= "#{singular_table_name}_params" %>
39
+ def user_params
40
40
  params.permit(:password, :password_confirmation)
41
41
  end
42
42
  <%- if options.lockable? %>
@@ -1,13 +1,13 @@
1
1
  class PasswordsController < ApplicationController
2
- before_action :set_<%= singular_table_name %>
2
+ before_action :set_user
3
3
 
4
4
  def edit
5
5
  end
6
6
 
7
7
  def update
8
- if !@<%= singular_table_name %>.authenticate(params[:current_password])
8
+ if !@user.authenticate(params[:current_password])
9
9
  redirect_to edit_password_path, alert: "The current password you entered is incorrect"
10
- elsif @<%= singular_table_name %>.update(<%= "#{singular_table_name}_params" %>)
10
+ elsif @user.update(user_params)
11
11
  redirect_to root_path, notice: "Your password has been changed"
12
12
  else
13
13
  render :edit, status: :unprocessable_entity
@@ -15,11 +15,11 @@ class PasswordsController < ApplicationController
15
15
  end
16
16
 
17
17
  private
18
- def set_<%= singular_table_name %>
19
- @<%= singular_table_name %> = Current.<%= singular_table_name %>
18
+ def set_user
19
+ @user = Current.user
20
20
  end
21
21
 
22
- def <%= "#{singular_table_name}_params" %>
22
+ def user_params
23
23
  params.permit(:password, :password_confirmation)
24
24
  end
25
25
  end
@@ -2,14 +2,14 @@ class RegistrationsController < ApplicationController
2
2
  skip_before_action :authenticate
3
3
 
4
4
  def new
5
- @<%= singular_table_name %> = <%= class_name %>.new
5
+ @user = User.new
6
6
  end
7
7
 
8
8
  def create
9
- @<%= singular_table_name %> = <%= class_name %>.new(<%= "#{singular_table_name}_params" %>)
9
+ @user = User.new(user_params)
10
10
 
11
- if @<%= singular_table_name %>.save
12
- session = @<%= singular_table_name %>.sessions.create!
11
+ if @user.save
12
+ session = @user.sessions.create!
13
13
  cookies.signed.permanent[:session_token] = { value: session.id, httponly: true }
14
14
 
15
15
  redirect_to root_path, notice: "Welcome! You have signed up successfully"
@@ -19,7 +19,7 @@ class RegistrationsController < ApplicationController
19
19
  end
20
20
 
21
21
  private
22
- def <%= "#{singular_table_name}_params" %>
22
+ def user_params
23
23
  params.permit(:email, :password, :password_confirmation)
24
24
  end
25
25
  end
@@ -3,10 +3,10 @@ class Sessions::OmniauthController < ApplicationController
3
3
  skip_before_action :authenticate
4
4
 
5
5
  def create
6
- @<%= singular_table_name %> = <%= class_name %>.where(omniauth_params).first_or_initialize(<%= "#{singular_table_name}_params" %>)
6
+ @user = User.where(omniauth_params).first_or_initialize(user_params)
7
7
 
8
- if @<%= singular_table_name %>.save
9
- session = @<%= singular_table_name %>.sessions.create!
8
+ if @user.save
9
+ session = @user.sessions.create!
10
10
  cookies.signed.permanent[:session_token] = { value: session.id, httponly: true }
11
11
 
12
12
  redirect_to root_path, notice: "Signed in successfully"
@@ -24,7 +24,7 @@ class Sessions::OmniauthController < ApplicationController
24
24
  { provider: omniauth.provider, uid: omniauth.uid }
25
25
  end
26
26
 
27
- def <%= "#{singular_table_name}_params" %>
27
+ def user_params
28
28
  { email: omniauth.info.email, password: SecureRandom::base58, verified: true }
29
29
  end
30
30
 
@@ -6,9 +6,9 @@ class Sessions::SudosController < ApplicationController
6
6
  session = Current.session
7
7
 
8
8
  <%- if omniauthable? -%>
9
- if session.<%= singular_table_name %>.authenticate(params[:password]) || session.<%= singular_table_name %>.provider
9
+ if session.user.authenticate(params[:password]) || session.user.provider
10
10
  <%- else -%>
11
- if session.<%= singular_table_name %>.authenticate(params[:password])
11
+ if session.user.authenticate(params[:password])
12
12
  <%- end -%>
13
13
  session.sudo.mark; redirect_to(params[:proceed_to_url])
14
14
  else