authentication-zero 2.16.5 → 2.16.7

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.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/Gemfile.lock +1 -1
  4. data/README.md +0 -1
  5. data/lib/authentication_zero/version.rb +1 -1
  6. data/lib/generators/authentication/authentication_generator.rb +10 -10
  7. data/lib/generators/authentication/templates/controllers/api/application_controller.rb.tt +0 -7
  8. data/lib/generators/authentication/templates/controllers/api/identity/emails_controller.rb.tt +3 -4
  9. data/lib/generators/authentication/templates/controllers/html/application_controller.rb.tt +0 -11
  10. data/lib/generators/authentication/templates/controllers/html/identity/emails_controller.rb.tt +3 -4
  11. data/lib/generators/authentication/templates/controllers/html/two_factor_authentication/totps_controller.rb.tt +3 -4
  12. data/lib/generators/authentication/templates/erb/identity/emails/edit.html.erb.tt +6 -1
  13. data/lib/generators/authentication/templates/erb/identity/password_resets/new.html.erb.tt +1 -1
  14. data/lib/generators/authentication/templates/erb/registrations/new.html.erb.tt +1 -1
  15. data/lib/generators/authentication/templates/erb/sessions/new.html.erb.tt +2 -2
  16. data/lib/generators/authentication/templates/erb/sessions/passwordlesses/new.html.erb.tt +1 -1
  17. data/lib/generators/authentication/templates/erb/two_factor_authentication/totps/new.html.erb.tt +6 -1
  18. data/lib/generators/authentication/templates/mailers/user_mailer.rb.tt +1 -1
  19. data/lib/generators/authentication/templates/models/session.rb.tt +0 -8
  20. data/lib/generators/authentication/templates/models/user.rb.tt +1 -1
  21. data/lib/generators/authentication/templates/test_unit/controllers/api/identity/emails_controller_test.rb.tt +8 -1
  22. data/lib/generators/authentication/templates/test_unit/controllers/html/identity/emails_controller_test.rb.tt +8 -1
  23. data/lib/generators/authentication/templates/test_unit/controllers/html/identity/password_resets_controller_test.rb.tt +1 -1
  24. data/lib/generators/authentication/templates/test_unit/system/identity/emails_test.rb.tt +1 -0
  25. metadata +2 -6
  26. data/lib/generators/authentication/templates/controllers/api/sessions/passwordlesses_controller.rb.tt +0 -34
  27. data/lib/generators/authentication/templates/controllers/api/sessions/sudos_controller.rb.tt +0 -11
  28. data/lib/generators/authentication/templates/controllers/html/sessions/sudos_controller.rb.tt +0 -14
  29. data/lib/generators/authentication/templates/erb/sessions/sudos/new.html.erb.tt +0 -28
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 02c890d34404e8613c543d9597e31f5a3cd3b7c14ea066f2096d1fbcb57ef372
4
- data.tar.gz: 93cb08256ae2817af9ebf3a5f4a4391c6012ee27854a8437a2cba47166521b7c
3
+ metadata.gz: 2759ec10946a7ca08a682e430a1035c2c6903bcde53cf65b1dd75abeb12e5fd5
4
+ data.tar.gz: 56097dbc2b99da7c03ffa308a5d69980c63583d0832d7219c77f19a62e6a8671
5
5
  SHA512:
6
- metadata.gz: 5af869dca3d8bc1b6ff2321687e6e241adb4f278910697b588421722f0cb92346fcb214042ccb7fe1acf510fc66bc35d473edc4d7152054bdcd3f9d52f1def8f
7
- data.tar.gz: 360a9e95c2794105966c7b76720a4ac123bcb7558389e27fa3aa87e8b71d995e5fd33e2ee066551f48c82b8c0c9734b9eae1b6a72bafc14486f645e07694544d
6
+ metadata.gz: 3b8a831fbe073cd0770f28c10f22a265fc2af63d520436c11df99da104f20097fbfaf1379025658729295e61485a400f801e01a2b9d596bd242ceac02995e9fb
7
+ data.tar.gz: 373df629f7a95f12aa0842063ca87b704f68b4dae5edf3a38d37627f5ea50ee5c54d2380479f9959357e34457cfc7efa6c72cd7919757a4d75801b0061ebc623
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## Authentication Zero 2.16.6 ##
2
+
3
+ * Remove passwordless from api template
4
+ * Remove sudoable, I want to make things simple for new users,
5
+ and it will became even simpler with the new rails 7.1 "password challenge api"
6
+
1
7
  ## Authentication Zero 2.16.5 ##
2
8
 
3
9
  * Revoke all password reset tokens (security enhancement)
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- authentication-zero (2.16.5)
4
+ authentication-zero (2.16.7)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -32,7 +32,6 @@ Since Authentication Zero generates this code into your application instead of b
32
32
  - Social Login with OmniAuth (--omniauthable)
33
33
  - Verify email using a link with token
34
34
  - Verify email using a six random digits code for api (--code-verifiable)
35
- - Ask password before sensitive data changes, aka: sudo (--sudoable)
36
35
  - Reset the user password and send reset instructions
37
36
  - Reset the user password only from verified emails
38
37
  - Lock mechanism for resetting password and sign-in (--lockable)
@@ -1,3 +1,3 @@
1
1
  module AuthenticationZero
2
- VERSION = "2.16.5"
2
+ VERSION = "2.16.7"
3
3
  end
@@ -6,7 +6,6 @@ class AuthenticationGenerator < Rails::Generators::Base
6
6
  class_option :api, type: :boolean, desc: "Generates API authentication"
7
7
  class_option :pwned, type: :boolean, desc: "Add pwned password validation"
8
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
9
  class_option :lockable, type: :boolean, desc: "Add password reset locking"
11
10
  class_option :passwordless, type: :boolean, desc: "Add passwordless sign"
12
11
  class_option :omniauthable, type: :boolean, desc: "Add social login support"
@@ -53,7 +52,7 @@ class AuthenticationGenerator < Rails::Generators::Base
53
52
  migration_template "migrations/create_sessions_migration.rb", "#{db_migrate_path}/create_sessions.rb"
54
53
  migration_template "migrations/create_email_verification_tokens_migration.rb", "#{db_migrate_path}/create_email_verification_tokens.rb"
55
54
  migration_template "migrations/create_password_reset_tokens_migration.rb", "#{db_migrate_path}/create_password_reset_tokens.rb"
56
- migration_template "migrations/create_sign_in_tokens_migration.rb", "#{db_migrate_path}/create_sign_in_tokens_migration.rb" if options.passwordless?
55
+ migration_template "migrations/create_sign_in_tokens_migration.rb", "#{db_migrate_path}/create_sign_in_tokens_migration.rb" if passwordless?
57
56
  migration_template "migrations/create_events_migration.rb", "#{db_migrate_path}/create_events.rb" if options.trackable?
58
57
  end
59
58
 
@@ -62,7 +61,7 @@ class AuthenticationGenerator < Rails::Generators::Base
62
61
  template "models/session.rb", "app/models/session.rb"
63
62
  template "models/email_verification_token.rb", "app/models/email_verification_token.rb"
64
63
  template "models/password_reset_token.rb", "app/models/password_reset_token.rb"
65
- template "models/sign_in_token.rb", "app/models/sign_in_token.rb" if options.passwordless?
64
+ template "models/sign_in_token.rb", "app/models/sign_in_token.rb" if passwordless?
66
65
  template "models/current.rb", "app/models/current.rb"
67
66
  template "models/event.rb", "app/models/event.rb" if options.trackable?
68
67
  end
@@ -80,9 +79,8 @@ class AuthenticationGenerator < Rails::Generators::Base
80
79
  template "controllers/#{format_folder}/passwords_controller.rb", "app/controllers/passwords_controller.rb"
81
80
  template "controllers/#{format_folder}/registrations_controller.rb", "app/controllers/registrations_controller.rb"
82
81
  template "controllers/#{format_folder}/home_controller.rb", "app/controllers/home_controller.rb" unless options.api?
83
- template "controllers/#{format_folder}/sessions/sudos_controller.rb", "app/controllers/sessions/sudos_controller.rb" if options.sudoable?
84
82
  template "controllers/#{format_folder}/sessions/omniauth_controller.rb", "app/controllers/sessions/omniauth_controller.rb" if omniauthable?
85
- template "controllers/#{format_folder}/sessions/passwordlesses_controller.rb", "app/controllers/sessions/passwordlesses_controller.rb" if options.passwordless?
83
+ template "controllers/#{format_folder}/sessions/passwordlesses_controller.rb", "app/controllers/sessions/passwordlesses_controller.rb" if passwordless?
86
84
  template "controllers/#{format_folder}/authentications/events_controller.rb", "app/controllers/authentications/events_controller.rb" if options.trackable?
87
85
  end
88
86
 
@@ -103,8 +101,7 @@ class AuthenticationGenerator < Rails::Generators::Base
103
101
  template "erb/sessions/index.html.erb", "app/views/sessions/index.html.erb"
104
102
  template "erb/sessions/new.html.erb", "app/views/sessions/new.html.erb"
105
103
 
106
- directory "erb/sessions/sudos", "app/views/sessions/sudos" if options.sudoable?
107
- directory "erb/sessions/passwordlesses", "app/views/sessions/passwordlesses" if options.passwordless?
104
+ directory "erb/sessions/passwordlesses", "app/views/sessions/passwordlesses" if passwordless?
108
105
 
109
106
  directory "erb/two_factor_authentication", "app/views/two_factor_authentication" if two_factor?
110
107
  directory "erb/authentications/events", "app/views/authentications/events" if options.trackable?
@@ -118,7 +115,7 @@ class AuthenticationGenerator < Rails::Generators::Base
118
115
  def add_routes
119
116
  route "root 'home#index'" unless options.api?
120
117
 
121
- if options.passwordless?
118
+ if passwordless?
122
119
  route "resource :passwordless, only: [:new, :edit, :create]", namespace: :sessions
123
120
  end
124
121
 
@@ -140,7 +137,6 @@ class AuthenticationGenerator < Rails::Generators::Base
140
137
  route "resource :password_reset, only: [:new, :edit, :create, :update]", namespace: :identity
141
138
  route "resource :email_verification, only: [:edit, :create]", namespace: :identity
142
139
  route "resource :email, only: [:edit, :update]", namespace: :identity
143
- route "resource :sudo, only: [:new, :create]", namespace: :sessions if options.sudoable?
144
140
  route "resource :password, only: [:edit, :update]"
145
141
  route "resources :sessions, only: [:index, :show, :destroy]"
146
142
  route "post 'sign_up', to: 'registrations#create'"
@@ -166,6 +162,10 @@ class AuthenticationGenerator < Rails::Generators::Base
166
162
  options.omniauthable? && !options.api?
167
163
  end
168
164
 
165
+ def passwordless?
166
+ options.passwordless? && !options.api?
167
+ end
168
+
169
169
  def two_factor?
170
170
  options.two_factor? && !options.api?
171
171
  end
@@ -175,6 +175,6 @@ class AuthenticationGenerator < Rails::Generators::Base
175
175
  end
176
176
 
177
177
  def redis?
178
- options.lockable? || options.sudoable? || code_verifiable?
178
+ options.lockable? || code_verifiable?
179
179
  end
180
180
  end
@@ -3,13 +3,6 @@ class ApplicationController < ActionController::API
3
3
 
4
4
  before_action :set_current_request_details
5
5
  before_action :authenticate
6
- <%- if options.sudoable? %>
7
- def require_sudo
8
- unless Current.session.sudo?
9
- render json: { error: "Enter your password to continue" }, status: :forbidden
10
- end
11
- end
12
- <%- end -%>
13
6
  <%- if options.lockable? %>
14
7
  def require_lock(wait: 1.hour, attempts: 10)
15
8
  counter = Kredis.counter("require_lock:#{request.remote_ip}:#{params[:controller]}:#{params[:action]}", expires_in: wait)
@@ -1,11 +1,10 @@
1
1
  class Identity::EmailsController < ApplicationController
2
- <%- if options.sudoable? -%>
3
- before_action :require_sudo
4
- <%- end -%>
5
2
  before_action :set_user
6
3
 
7
4
  def update
8
- if @user.update(user_params)
5
+ if !@user.authenticate(params[:current_password])
6
+ render json: { error: "The password you entered is incorrect" }, status: :bad_request
7
+ elsif @user.update(user_params)
9
8
  render_show
10
9
  else
11
10
  render json: @user.errors, status: :unprocessable_entity
@@ -1,17 +1,6 @@
1
1
  class ApplicationController < ActionController::Base
2
2
  before_action :set_current_request_details
3
3
  before_action :authenticate
4
- <%- if options.sudoable? %>
5
- def require_sudo
6
- <%- if omniauthable? -%>
7
- unless Current.session.sudo? || Current.session.user.provider.present?
8
- <%- else -%>
9
- unless Current.session.sudo?
10
- <%- end -%>
11
- redirect_to new_sessions_sudo_path(proceed_to_url: request.url)
12
- end
13
- end
14
- <%- end -%>
15
4
  <%- if options.lockable? %>
16
5
  def require_lock(wait: 1.hour, attempts: 10)
17
6
  counter = Kredis.counter("require_lock:#{request.remote_ip}:#{params[:controller]}:#{params[:action]}", expires_in: wait)
@@ -1,14 +1,13 @@
1
1
  class Identity::EmailsController < ApplicationController
2
- <%- if options.sudoable? -%>
3
- before_action :require_sudo
4
- <%- end -%>
5
2
  before_action :set_user
6
3
 
7
4
  def edit
8
5
  end
9
6
 
10
7
  def update
11
- if @user.update(user_params)
8
+ if !@user.authenticate(params[:current_password])
9
+ redirect_to edit_identity_email_path, alert: "The password you entered is incorrect"
10
+ elsif @user.update(user_params)
12
11
  redirect_to_root
13
12
  else
14
13
  render :edit, status: :unprocessable_entity
@@ -1,7 +1,4 @@
1
1
  class TwoFactorAuthentication::TotpsController < ApplicationController
2
- <%- if options.sudoable? -%>
3
- before_action :require_sudo
4
- <%- end -%>
5
2
  before_action :set_user
6
3
  before_action :set_totp
7
4
 
@@ -10,7 +7,9 @@ class TwoFactorAuthentication::TotpsController < ApplicationController
10
7
  end
11
8
 
12
9
  def create
13
- if @totp.verify(params[:code], drift_behind: 15)
10
+ if !@user.authenticate(params[:current_password])
11
+ redirect_to two_factor_authentication_totp_path, alert: "The password you entered is incorrect"
12
+ elsif @totp.verify(params[:code], drift_behind: 15)
14
13
  @user.update! otp_secret: params[:secret]
15
14
  redirect_to root_path, notice: "2FA is enabled on your account"
16
15
  else
@@ -23,7 +23,12 @@
23
23
 
24
24
  <div>
25
25
  <%%= form.label :email, "New email", style: "display: block" %>
26
- <%%= form.email_field :email %>
26
+ <%%= form.email_field :email, required: true, autofocus: true %>
27
+ </div>
28
+
29
+ <div>
30
+ <%%= form.label :current_password, style: "display: block" %>
31
+ <%%= form.password_field :current_password, required: true, autocomplete: "current-password" %>
27
32
  </div>
28
33
 
29
34
  <div>
@@ -5,7 +5,7 @@
5
5
  <%%= form_with(url: identity_password_reset_path) do |form| %>
6
6
  <div>
7
7
  <%%= form.label :email, style: "display: block" %>
8
- <%%= form.email_field :email, autofocus: true, required: true %>
8
+ <%%= form.email_field :email, required: true, autofocus: true %>
9
9
  </div>
10
10
 
11
11
  <div>
@@ -15,7 +15,7 @@
15
15
 
16
16
  <div>
17
17
  <%%= form.label :email, style: "display: block" %>
18
- <%%= form.email_field :email, autofocus: true, autocomplete: "email" %>
18
+ <%%= form.email_field :email, required: true, autofocus: true, autocomplete: "email" %>
19
19
  </div>
20
20
 
21
21
  <div>
@@ -6,7 +6,7 @@
6
6
  <%%= form_with(url: sign_in_path) do |form| %>
7
7
  <div>
8
8
  <%%= form.label :email, style: "display: block" %>
9
- <%%= form.email_field :email, value: params[:email_hint], autofocus: true, required: true, autocomplete: "email" %>
9
+ <%%= form.email_field :email, value: params[:email_hint], required: true, autofocus: true, autocomplete: "email" %>
10
10
  </div>
11
11
 
12
12
  <div>
@@ -21,7 +21,7 @@
21
21
 
22
22
  <br>
23
23
 
24
- <%- if options.passwordless? %>
24
+ <%- if passwordless? %>
25
25
  <div>
26
26
  <%%= link_to "Sign in without password", new_sessions_passwordless_path %>
27
27
  </div>
@@ -5,7 +5,7 @@
5
5
  <%%= form_with(url: sessions_passwordless_path) do |form| %>
6
6
  <div>
7
7
  <%%= form.label :email, style: "display: block" %>
8
- <%%= form.email_field :email, autofocus: true, required: true %>
8
+ <%%= form.email_field :email, required: true, autofocus: true%>
9
9
  </div>
10
10
 
11
11
  <div>
@@ -19,7 +19,12 @@
19
19
 
20
20
  <div>
21
21
  <%%= form.label :code, "After scanning with your camera, the app will generate a six-digit code. Enter it here:", style: "display: block" %>
22
- <%%= form.text_field :code, autofocus: true, required: true, autocomplete: :off %>
22
+ <%%= form.text_field :code, required: true, autofocus: true, autocomplete: :off %>
23
+ </div>
24
+
25
+ <div>
26
+ <%%= form.label :current_password, style: "display: block" %>
27
+ <%%= form.password_field :current_password, required: true, autocomplete: "current-password" %>
23
28
  </div>
24
29
 
25
30
  <div>
@@ -16,7 +16,7 @@ class UserMailer < ApplicationMailer
16
16
 
17
17
  mail to: @user.email, subject: "Verify your email"
18
18
  end
19
- <%- if options.passwordless? %>
19
+ <%- if passwordless? %>
20
20
  def passwordless
21
21
  @user = params[:user]
22
22
  @signed_id = @user.sign_in_tokens.create.signed_id(expires_in: 1.day)
@@ -1,18 +1,10 @@
1
1
  class Session < ApplicationRecord
2
2
  belongs_to :user
3
- <%- if options.sudoable? %>
4
- kredis_flag :sudo, expires_in: 30.minutes
5
- <%- end -%>
6
3
 
7
4
  before_create do
8
5
  self.user_agent = Current.user_agent
9
6
  self.ip_address = Current.ip_address
10
7
  end
11
- <%- if options.sudoable? %>
12
- after_create_commit do
13
- self.sudo.mark
14
- end
15
- <%- end -%>
16
8
 
17
9
  after_create_commit do
18
10
  SessionMailer.with(session: self).signed_in_notification.deliver_later
@@ -3,7 +3,7 @@ class User < ApplicationRecord
3
3
 
4
4
  has_many :email_verification_tokens, dependent: :destroy
5
5
  has_many :password_reset_tokens, dependent: :destroy
6
- <%- if options.passwordless? -%>
6
+ <%- if passwordless? -%>
7
7
  has_many :sign_in_tokens, dependent: :destroy
8
8
  <%- end -%>
9
9
 
@@ -10,7 +10,14 @@ class Identity::EmailsControllerTest < ActionDispatch::IntegrationTest
10
10
  end
11
11
 
12
12
  test "should update email" do
13
- patch identity_email_url, params: { email: "new_email@hey.com" }, headers: default_headers
13
+ patch identity_email_url, params: { email: "new_email@hey.com", current_password: "Secret1*3*5*" }, headers: default_headers
14
14
  assert_response :success
15
15
  end
16
+
17
+ test "should not update email with wrong current password" do
18
+ patch identity_email_url, params: { email: "new_email@hey.com", current_password: "SecretWrong1*3" }, headers: default_headers
19
+
20
+ assert_response :bad_request
21
+ assert_equal "The password you entered is incorrect", response.parsed_body["error"]
22
+ end
16
23
  end
@@ -11,7 +11,14 @@ class Identity::EmailsControllerTest < ActionDispatch::IntegrationTest
11
11
  end
12
12
 
13
13
  test "should update email" do
14
- patch identity_email_url, params: { email: "new_email@hey.com" }
14
+ patch identity_email_url, params: { email: "new_email@hey.com", current_password: "Secret1*3*5*" }
15
15
  assert_redirected_to root_url
16
16
  end
17
+
18
+ test "should not update email with wrong current password" do
19
+ patch identity_email_url, params: { email: "new_email@hey.com", current_password: "SecretWrong1*3" }
20
+
21
+ assert_redirected_to edit_identity_email_url
22
+ assert_equal "The password you entered is incorrect", flash[:alert]
23
+ end
17
24
  end
@@ -55,7 +55,7 @@ class Identity::PasswordResetsControllerTest < ActionDispatch::IntegrationTest
55
55
  test "should not update password with expired token" do
56
56
  sid_exp = @user.password_reset_tokens.create.signed_id(expires_in: 0.minutes)
57
57
 
58
- patch identity_password_reset_url, params: { sid: @sid_exp, password: "Secret6*4*2*", password_confirmation: "Secret6*4*2*" }
58
+ patch identity_password_reset_url, params: { sid: sid_exp, password: "Secret6*4*2*", password_confirmation: "Secret6*4*2*" }
59
59
  assert_redirected_to new_identity_password_reset_url
60
60
  assert_equal "That password reset link is invalid", flash[:alert]
61
61
  end
@@ -9,6 +9,7 @@ class Identity::EmailsTest < ApplicationSystemTestCase
9
9
  click_on "Change email address"
10
10
 
11
11
  fill_in "New email", with: "new_email@hey.com"
12
+ fill_in "Current password", with: "Secret1*3*5*"
12
13
  click_on "Save changes"
13
14
 
14
15
  assert_text "Your email has been changed"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: authentication-zero
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.16.5
4
+ version: 2.16.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nixon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-13 00:00:00.000000000 Z
11
+ date: 2023-02-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -44,8 +44,6 @@ files:
44
44
  - lib/generators/authentication/templates/controllers/api/identity/password_resets_controller.rb.tt
45
45
  - lib/generators/authentication/templates/controllers/api/passwords_controller.rb.tt
46
46
  - lib/generators/authentication/templates/controllers/api/registrations_controller.rb.tt
47
- - lib/generators/authentication/templates/controllers/api/sessions/passwordlesses_controller.rb.tt
48
- - lib/generators/authentication/templates/controllers/api/sessions/sudos_controller.rb.tt
49
47
  - lib/generators/authentication/templates/controllers/api/sessions_controller.rb.tt
50
48
  - lib/generators/authentication/templates/controllers/html/application_controller.rb.tt
51
49
  - lib/generators/authentication/templates/controllers/html/authentications/events_controller.rb.tt
@@ -57,7 +55,6 @@ files:
57
55
  - lib/generators/authentication/templates/controllers/html/registrations_controller.rb.tt
58
56
  - lib/generators/authentication/templates/controllers/html/sessions/omniauth_controller.rb.tt
59
57
  - lib/generators/authentication/templates/controllers/html/sessions/passwordlesses_controller.rb.tt
60
- - lib/generators/authentication/templates/controllers/html/sessions/sudos_controller.rb.tt
61
58
  - lib/generators/authentication/templates/controllers/html/sessions_controller.rb.tt
62
59
  - lib/generators/authentication/templates/controllers/html/two_factor_authentication/challenges_controller.rb.tt
63
60
  - lib/generators/authentication/templates/controllers/html/two_factor_authentication/totps_controller.rb.tt
@@ -72,7 +69,6 @@ files:
72
69
  - lib/generators/authentication/templates/erb/sessions/index.html.erb.tt
73
70
  - lib/generators/authentication/templates/erb/sessions/new.html.erb.tt
74
71
  - lib/generators/authentication/templates/erb/sessions/passwordlesses/new.html.erb.tt
75
- - lib/generators/authentication/templates/erb/sessions/sudos/new.html.erb.tt
76
72
  - lib/generators/authentication/templates/erb/two_factor_authentication/challenges/new.html.erb.tt
77
73
  - lib/generators/authentication/templates/erb/two_factor_authentication/totps/new.html.erb.tt
78
74
  - lib/generators/authentication/templates/erb/user_mailer/email_verification.html.erb.tt
@@ -1,34 +0,0 @@
1
- class Sessions::PasswordlessesController < ApplicationController
2
- skip_before_action :authenticate
3
-
4
- <%- if options.lockable? -%>
5
- before_action :require_lock, only: :create
6
- <%- end -%>
7
- before_action :set_user, only: :edit
8
-
9
- def edit
10
- @session = @user.sessions.create!
11
- response.set_header "X-Session-Token", @session.signed_id
12
-
13
- revoke_tokens; render(json: @session, status: :created)
14
- end
15
-
16
- def create
17
- if @user = User.find_by(email: params[:email], verified: true)
18
- UserMailer.with(user: @user).passwordless.deliver_later
19
- else
20
- render json: { error: "You can't sign in until you verify your email" }, status: :bad_request
21
- end
22
- end
23
-
24
- private
25
- def set_user
26
- @token = SignInToken.find_signed!(params[:sid]); @user = @token.user
27
- rescue
28
- render json: { error: "That sign in link is invalid" }, status: :bad_request
29
- end
30
-
31
- def revoke_tokens
32
- @user.sign_in_tokens.delete_all
33
- end
34
- end
@@ -1,11 +0,0 @@
1
- class Sessions::SudosController < ApplicationController
2
- def create
3
- session = Current.session
4
-
5
- if session.user.authenticate(params[:password])
6
- session.sudo.mark
7
- else
8
- render json: { error: "The password you entered is incorrect" }, status: :bad_request
9
- end
10
- end
11
- end
@@ -1,14 +0,0 @@
1
- class Sessions::SudosController < ApplicationController
2
- def new
3
- end
4
-
5
- def create
6
- session = Current.session
7
-
8
- if session.user.authenticate(params[:password])
9
- session.sudo.mark; redirect_to(params[:proceed_to_url])
10
- else
11
- redirect_to new_sessions_sudo_path(proceed_to_url: params[:proceed_to_url]), alert: "The password you entered is incorrect"
12
- end
13
- end
14
- end
@@ -1,28 +0,0 @@
1
- <p style="color: red"><%%= alert %></p>
2
-
3
- <h1>Enter your password to continue</h1>
4
-
5
- <%%= form_with(url: sessions_sudo_path) do |form| %>
6
-
7
- <%%= form.hidden_field :proceed_to_url, value: params[:proceed_to_url] %>
8
-
9
- <div>
10
- <%%= form.password_field :password, required: true, autofocus: true, autocomplete: "current-password" %>
11
- </div>
12
-
13
- <div>
14
- <%%= form.submit "Continue" %>
15
- </div>
16
- <%% end %>
17
-
18
- <br>
19
-
20
- <p>
21
- <strong>Why are you asking me to do this?</strong><br>
22
- To better protect your account, we'll occasionally ask you to confirm your password before performing sensitive actions.
23
- </p>
24
-
25
- <p>
26
- <strong>Forgot your password?</strong><br>
27
- We'll help you <%%= link_to "reset it", new_identity_password_reset_path %> so you can continue.
28
- </p>