authentication-zero 2.2.5 → 2.2.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (22) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/lib/authentication_zero/version.rb +1 -1
  4. data/lib/generators/authentication/authentication_generator.rb +1 -2
  5. data/lib/generators/authentication/templates/controllers/api/email_verifications_controller.rb.tt +7 -11
  6. data/lib/generators/authentication/templates/controllers/api/emails_controller.rb.tt +8 -3
  7. data/lib/generators/authentication/templates/controllers/api/password_resets_controller.rb.tt +1 -1
  8. data/lib/generators/authentication/templates/controllers/api/passwords_controller.rb.tt +8 -3
  9. data/lib/generators/authentication/templates/controllers/api/sessions_controller.rb.tt +1 -1
  10. data/lib/generators/authentication/templates/controllers/html/email_verifications_controller.rb.tt +4 -8
  11. data/lib/generators/authentication/templates/controllers/html/emails_controller.rb.tt +8 -3
  12. data/lib/generators/authentication/templates/controllers/html/password_resets_controller.rb.tt +1 -1
  13. data/lib/generators/authentication/templates/controllers/html/passwords_controller.rb.tt +8 -3
  14. data/lib/generators/authentication/templates/controllers/html/sessions_controller.rb.tt +1 -1
  15. data/lib/generators/authentication/templates/models/model.rb.tt +4 -4
  16. data/lib/generators/authentication/templates/test_unit/controllers/api/email_verifications_controller_test.rb.tt +4 -5
  17. data/lib/generators/authentication/templates/test_unit/controllers/api/emails_controller_test.rb.tt +1 -2
  18. data/lib/generators/authentication/templates/test_unit/controllers/api/passwords_controller_test.rb.tt +1 -2
  19. data/lib/generators/authentication/templates/test_unit/controllers/api/registrations_controller_test.rb.tt +1 -2
  20. data/lib/generators/authentication/templates/test_unit/controllers/api/sessions_controller_test.rb.tt +1 -2
  21. metadata +1 -2
  22. data/lib/generators/authentication/templates/test_unit/sessions.yml.tt +0 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cbf5451c5736444444c73e85d59820172c61985c90393c5a3eb4fc7e92dd476e
4
- data.tar.gz: f6bea74bc5e5334f27036ce75831562d3f0e95e9eaea76be7e5d1e799df2afd6
3
+ metadata.gz: b36f33fad8ac0fd532efd29f0db68dc51bcac45a8fff39d53f914d7d3f4381e6
4
+ data.tar.gz: f44735476b0095bd9f4c5dd9db09c16b9e8bc7edf636d32372da2a974bfe249b
5
5
  SHA512:
6
- metadata.gz: a0ae090e81d5ffe5149c3d2dea1a1ca64071335829393700732458c1f6b4d8167335c23e74cf1370e49b7f14a1751ecfd28e3d68205b7303198544a4a209ec73
7
- data.tar.gz: bd43ec57382214d285cdd556b68468096aad74b689e41df5cce770d5334b1d11e1858267fd31aedf7260509f34b7e95b41d6e8f3cd50dc64e63f5170bbcf1e15
6
+ metadata.gz: 1fb6d2a12d39475fa1ced3b188230426ad18fc67bef7c6f560e1744bc73b17e45b676bf8b68c79129474004fbe9e47150c4fd82b36cdd78555772df03f398d8b
7
+ data.tar.gz: 0d1b0553b77a69ee1a67546c9d2e749abf47481cc2cf7355eda039777ade3ad14d95531ea640b694d698ccac7f7603fdf1d70faf2e1efac2ab59c79b90613e09
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- authentication-zero (2.2.5)
4
+ authentication-zero (2.2.8)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -1,3 +1,3 @@
1
1
  module AuthenticationZero
2
- VERSION = "2.2.5"
2
+ VERSION = "2.2.8"
3
3
  end
@@ -38,7 +38,6 @@ class AuthenticationGenerator < Rails::Generators::NamedBase
38
38
  def create_fixture_file
39
39
  if options.fixture && options.fixture_replacement.nil?
40
40
  template "#{test_framework}/fixtures.yml", "test/fixtures/#{fixture_file_name}.yml"
41
- template "#{test_framework}/sessions.yml", "test/fixtures/sessions.yml"
42
41
  end
43
42
  end
44
43
 
@@ -97,7 +96,7 @@ class AuthenticationGenerator < Rails::Generators::NamedBase
97
96
  route "resource :registration, only: :destroy"
98
97
  route "resource :password_reset, only: [:new, :edit, :create, :update]"
99
98
  route "resource :password, only: [:edit, :update]"
100
- route "resource :email_verification, only: [:new, :edit, :create, :update]"
99
+ route "resource :email_verification, only: [:edit, :create]"
101
100
  route "resource :email, only: [:edit, :update]"
102
101
  route "resources :sessions, only: [:index, :show, :destroy]"
103
102
  route "post 'sign_up', to: 'registrations#create'"
@@ -1,22 +1,18 @@
1
1
  class EmailVerificationsController < ApplicationController
2
- before_action :set_<%= singular_table_name %>, only: :update
2
+ before_action :set_<%= singular_table_name %>, only: :edit
3
3
 
4
- def create
5
- IdentityMailer.with(<%= singular_table_name %>: Current.<%= singular_table_name %>).email_verify_confirmation.deliver_later
4
+ def edit
5
+ @<%= singular_table_name %>.update! verified: true
6
6
  end
7
7
 
8
- def update
9
- if Current.<%= singular_table_name %>.email == params[:email]
10
- @<%= singular_table_name %>.update! verified: true
11
- else
12
- render json: { error: "That email verification link is invalid" }, status: :bad_request
13
- end
8
+ def create
9
+ IdentityMailer.with(<%= singular_table_name %>: Current.<%= singular_table_name %>).email_verify_confirmation.deliver_later
14
10
  end
15
11
 
16
12
  private
17
13
  def set_<%= singular_table_name %>
18
- @<%= singular_table_name %> = <%= class_name %>.find_signed!(params[:token], purpose: params[:email])
19
- rescue ActiveSupport::MessageVerifier::InvalidSignature
14
+ @<%= singular_table_name %> = <%= class_name %>.where(email: params[:email]).find_signed!(params[:token], purpose: params[:email])
15
+ rescue
20
16
  render json: { error: "That email verification link is invalid" }, status: :bad_request
21
17
  end
22
18
  end
@@ -1,10 +1,9 @@
1
1
  class EmailsController < ApplicationController
2
2
  before_action :set_<%= singular_table_name %>
3
+ before_action :validate_current_password
3
4
 
4
5
  def update
5
- if !@<%= singular_table_name %>.authenticate(params[:current_password])
6
- render json: { error: "The current password you entered is incorrect" }, status: :bad_request
7
- elsif @<%= singular_table_name %>.update(<%= "#{singular_table_name}_params" %>)
6
+ if @<%= singular_table_name %>.update(<%= "#{singular_table_name}_params" %>)
8
7
  render json: @<%= singular_table_name %>
9
8
  else
10
9
  render json: @<%= singular_table_name %>.errors, status: :unprocessable_entity
@@ -19,4 +18,10 @@ class EmailsController < ApplicationController
19
18
  def <%= "#{singular_table_name}_params" %>
20
19
  params.permit(:email)
21
20
  end
21
+
22
+ def validate_current_password
23
+ unless @<%= singular_table_name %>.authenticate(params[:current_password])
24
+ render json: { error: "The current password you entered is incorrect" }, status: :bad_request
25
+ end
26
+ end
22
27
  end
@@ -22,7 +22,7 @@ class PasswordResetsController < ApplicationController
22
22
  private
23
23
  def set_<%= singular_table_name %>
24
24
  @<%= singular_table_name %> = <%= class_name %>.find_signed!(params[:token], purpose: :password_reset)
25
- rescue ActiveSupport::MessageVerifier::InvalidSignature
25
+ rescue
26
26
  render json: { error: "That password reset link is invalid" }, status: :bad_request
27
27
  end
28
28
 
@@ -1,10 +1,9 @@
1
1
  class PasswordsController < ApplicationController
2
2
  before_action :set_<%= singular_table_name %>
3
+ before_action :validate_current_password
3
4
 
4
5
  def update
5
- if !@<%= singular_table_name %>.authenticate(params[:current_password])
6
- render json: { error: "The current password you entered is incorrect" }, status: :bad_request
7
- elsif @<%= singular_table_name %>.update(<%= "#{singular_table_name}_params" %>)
6
+ if @<%= singular_table_name %>.update(<%= "#{singular_table_name}_params" %>)
8
7
  render json: @<%= singular_table_name %>
9
8
  else
10
9
  render json: @<%= singular_table_name %>.errors, status: :unprocessable_entity
@@ -19,4 +18,10 @@ class PasswordsController < ApplicationController
19
18
  def <%= "#{singular_table_name}_params" %>
20
19
  params.permit(:password, :password_confirmation)
21
20
  end
21
+
22
+ def validate_current_password
23
+ unless @<%= singular_table_name %>.authenticate(params[:current_password])
24
+ render json: { error: "The current password you entered is incorrect" }, status: :bad_request
25
+ end
26
+ end
22
27
  end
@@ -14,7 +14,7 @@ class SessionsController < ApplicationController
14
14
  def create
15
15
  @<%= singular_table_name %> = <%= class_name %>.find_by_email(params[:email])
16
16
 
17
- if @<%= singular_table_name %>.try(:authenticate, params[:password])
17
+ if @<%= singular_table_name %> && @<%= singular_table_name %>.authenticate(params[:password])
18
18
  session = @<%= singular_table_name %>.sessions.create!(session_params)
19
19
  response.set_header("X-Session-Token", session.signed_id)
20
20
 
@@ -2,12 +2,8 @@ class EmailVerificationsController < ApplicationController
2
2
  before_action :set_<%= singular_table_name %>, only: :edit
3
3
 
4
4
  def edit
5
- if Current.<%= singular_table_name %>.email == params[:email]
6
- @<%= singular_table_name %>.update! verified: true
7
- redirect_to root_path, notice: "Thank you for verifying your email address"
8
- else
9
- redirect_to edit_email_path, alert: "That email verification link is invalid"
10
- end
5
+ @<%= singular_table_name %>.update! verified: true
6
+ redirect_to root_path, notice: "Thank you for verifying your email address"
11
7
  end
12
8
 
13
9
  def create
@@ -17,8 +13,8 @@ class EmailVerificationsController < ApplicationController
17
13
 
18
14
  private
19
15
  def set_<%= singular_table_name %>
20
- @<%= singular_table_name %> = <%= class_name %>.find_signed!(params[:token], purpose: params[:email])
21
- rescue ActiveSupport::MessageVerifier::InvalidSignature
16
+ @<%= singular_table_name %> = <%= class_name %>.where(email: params[:email]).find_signed!(params[:token], purpose: params[:email])
17
+ rescue
22
18
  redirect_to edit_email_path, alert: "That email verification link is invalid"
23
19
  end
24
20
  end
@@ -1,13 +1,12 @@
1
1
  class EmailsController < ApplicationController
2
2
  before_action :set_<%= singular_table_name %>
3
+ before_action :validate_current_password, only: :update
3
4
 
4
5
  def edit
5
6
  end
6
7
 
7
8
  def update
8
- if !@<%= singular_table_name %>.authenticate(params[:current_password])
9
- redirect_to edit_email_path, alert: "The current password you entered is incorrect"
10
- elsif @<%= singular_table_name %>.update(<%= "#{singular_table_name}_params" %>)
9
+ if @<%= singular_table_name %>.update(<%= "#{singular_table_name}_params" %>)
11
10
  redirect_to root_path, notice: "Your email has been changed"
12
11
  else
13
12
  render :edit, status: :unprocessable_entity
@@ -22,4 +21,10 @@ class EmailsController < ApplicationController
22
21
  def <%= "#{singular_table_name}_params" %>
23
22
  params.require(:<%= singular_table_name %>).permit(:email)
24
23
  end
24
+
25
+ def validate_current_password
26
+ unless @<%= singular_table_name %>.authenticate(params[:current_password])
27
+ redirect_to edit_email_path, alert: "The current password you entered is incorrect"
28
+ end
29
+ end
25
30
  end
@@ -29,7 +29,7 @@ class PasswordResetsController < ApplicationController
29
29
  private
30
30
  def set_<%= singular_table_name %>
31
31
  @<%= singular_table_name %> = <%= class_name %>.find_signed!(params[:token], purpose: :password_reset)
32
- rescue ActiveSupport::MessageVerifier::InvalidSignature
32
+ rescue
33
33
  redirect_to new_password_reset_path, alert: "That password reset link is invalid"
34
34
  end
35
35
 
@@ -1,13 +1,12 @@
1
1
  class PasswordsController < ApplicationController
2
2
  before_action :set_<%= singular_table_name %>
3
+ before_action :validate_current_password, only: :update
3
4
 
4
5
  def edit
5
6
  end
6
7
 
7
8
  def update
8
- if !@<%= singular_table_name %>.authenticate(params[:current_password])
9
- redirect_to edit_password_path, alert: "The current password you entered is incorrect"
10
- elsif @<%= singular_table_name %>.update(<%= "#{singular_table_name}_params" %>)
9
+ if @<%= singular_table_name %>.update(<%= "#{singular_table_name}_params" %>)
11
10
  redirect_to root_path, notice: "Your password has been changed"
12
11
  else
13
12
  render :edit, status: :unprocessable_entity
@@ -22,4 +21,10 @@ class PasswordsController < ApplicationController
22
21
  def <%= "#{singular_table_name}_params" %>
23
22
  params.require(:<%= singular_table_name %>).permit(:password, :password_confirmation)
24
23
  end
24
+
25
+ def validate_current_password
26
+ unless @<%= singular_table_name %>.authenticate(params[:current_password])
27
+ redirect_to edit_password_path, alert: "The current password you entered is incorrect"
28
+ end
29
+ end
25
30
  end
@@ -14,7 +14,7 @@ class SessionsController < ApplicationController
14
14
  def create
15
15
  @<%= singular_table_name %> = <%= class_name %>.find_by_email(params[:email])
16
16
 
17
- if @<%= singular_table_name %>.try(:authenticate, params[:password])
17
+ if @<%= singular_table_name %> && @<%= singular_table_name %>.authenticate(params[:password])
18
18
  session = @<%= singular_table_name %>.sessions.create!(session_params)
19
19
  cookies.signed.permanent[:session_token] = { value: session.id, httponly: true }
20
20
 
@@ -11,12 +11,12 @@ class <%= class_name %> < ApplicationRecord
11
11
  self.email = email.downcase.strip
12
12
  end
13
13
 
14
- after_create_commit do
15
- IdentityMailer.with(<%= singular_table_name %>: self).email_verify_confirmation.deliver_later
14
+ before_validation if: :email_changed? do
15
+ self.verified = false
16
16
  end
17
17
 
18
- after_update_commit if: :email_previously_changed? do
19
- update_columns verified: false
18
+ after_create_commit do
19
+ IdentityMailer.with(<%= singular_table_name %>: self).email_verify_confirmation.deliver_later
20
20
  end
21
21
 
22
22
  after_update_commit if: :email_previously_changed? do
@@ -18,12 +18,12 @@ class EmailVerificationsControllerTest < ActionDispatch::IntegrationTest
18
18
  end
19
19
 
20
20
  test "should verify email" do
21
- patch email_verification_url, params: { token: @sid, email: @<%= singular_table_name %>.email }, headers: { "Authorization" => "Bearer #{@token}" }
21
+ get edit_email_verification_url, params: { token: @sid, email: @<%= singular_table_name %>.email }, headers: { "Authorization" => "Bearer #{@token}" }
22
22
  assert_response :no_content
23
23
  end
24
24
 
25
25
  test "should not verify email with expired token" do
26
- patch email_verification_url, params: { token: @sid_exp, email: @<%= singular_table_name %>.email }, headers: { "Authorization" => "Bearer #{@token}" }
26
+ get edit_email_verification_url, params: { token: @sid_exp, email: @<%= singular_table_name %>.email }, headers: { "Authorization" => "Bearer #{@token}" }
27
27
 
28
28
  assert_response :bad_request
29
29
  assert_equal "That email verification link is invalid", response.parsed_body["error"]
@@ -32,14 +32,13 @@ class EmailVerificationsControllerTest < ActionDispatch::IntegrationTest
32
32
  test "should not verify email with previous token" do
33
33
  @<%= singular_table_name %>.update! email: "other_email@hey.com"
34
34
 
35
- patch email_verification_url, params: { token: @sid, email: @<%= singular_table_name %>.email_previously_was }, headers: { "Authorization" => "Bearer #{@token}" }
35
+ get edit_email_verification_url, params: { token: @sid, email: @<%= singular_table_name %>.email_previously_was }, headers: { "Authorization" => "Bearer #{@token}" }
36
36
 
37
37
  assert_response :bad_request
38
38
  assert_equal "That email verification link is invalid", response.parsed_body["error"]
39
39
  end
40
40
 
41
41
  def sign_in_as(<%= singular_table_name %>)
42
- post(sign_in_url, params: { email: <%= singular_table_name %>.email, password: "secret123" })
43
- [<%= singular_table_name %>, response.headers["X-Session-Token"]]
42
+ post(sign_in_url, params: { email: <%= singular_table_name %>.email, password: "secret123" }); [<%= singular_table_name %>, response.headers["X-Session-Token"]]
44
43
  end
45
44
  end
@@ -18,7 +18,6 @@ class EmailsControllerTest < ActionDispatch::IntegrationTest
18
18
  end
19
19
 
20
20
  def sign_in_as(<%= singular_table_name %>)
21
- post(sign_in_url, params: { email: <%= singular_table_name %>.email, password: "secret123" })
22
- [<%= singular_table_name %>, response.headers["X-Session-Token"]]
21
+ post(sign_in_url, params: { email: <%= singular_table_name %>.email, password: "secret123" }); [<%= singular_table_name %>, response.headers["X-Session-Token"]]
23
22
  end
24
23
  end
@@ -18,7 +18,6 @@ class PasswordsControllerTest < ActionDispatch::IntegrationTest
18
18
  end
19
19
 
20
20
  def sign_in_as(<%= singular_table_name %>)
21
- post(sign_in_url, params: { email: <%= singular_table_name %>.email, password: "secret123" })
22
- [<%= singular_table_name %>, response.headers["X-Session-Token"]]
21
+ post(sign_in_url, params: { email: <%= singular_table_name %>.email, password: "secret123" }); [<%= singular_table_name %>, response.headers["X-Session-Token"]]
23
22
  end
24
23
  end
@@ -20,7 +20,6 @@ class RegistrationsControllerTest < ActionDispatch::IntegrationTest
20
20
  end
21
21
 
22
22
  def sign_in_as(<%= singular_table_name %>)
23
- post(sign_in_url, params: { email: <%= singular_table_name %>.email, password: "secret123" })
24
- [<%= singular_table_name %>, response.headers["X-Session-Token"]]
23
+ post(sign_in_url, params: { email: <%= singular_table_name %>.email, password: "secret123" }); [<%= singular_table_name %>, response.headers["X-Session-Token"]]
25
24
  end
26
25
  end
@@ -33,7 +33,6 @@ class SessionsControllerTest < ActionDispatch::IntegrationTest
33
33
  end
34
34
 
35
35
  def sign_in_as(<%= singular_table_name %>)
36
- post(sign_in_url, params: { email: <%= singular_table_name %>.email, password: "secret123" })
37
- [<%= singular_table_name %>, response.headers["X-Session-Token"]]
36
+ post(sign_in_url, params: { email: <%= singular_table_name %>.email, password: "secret123" }); [<%= singular_table_name %>, response.headers["X-Session-Token"]]
38
37
  end
39
38
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: authentication-zero
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.5
4
+ version: 2.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nixon
@@ -76,7 +76,6 @@ files:
76
76
  - lib/generators/authentication/templates/test_unit/controllers/html/registrations_controller_test.rb.tt
77
77
  - lib/generators/authentication/templates/test_unit/controllers/html/sessions_controller_test.rb.tt
78
78
  - lib/generators/authentication/templates/test_unit/fixtures.yml.tt
79
- - lib/generators/authentication/templates/test_unit/sessions.yml.tt
80
79
  - lib/generators/authentication/templates/test_unit/system/emails_test.rb.tt
81
80
  - lib/generators/authentication/templates/test_unit/system/password_resets_test.rb.tt
82
81
  - lib/generators/authentication/templates/test_unit/system/passwords_test.rb.tt
@@ -1,6 +0,0 @@
1
- # Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2
-
3
- lazaro_nixon_ios:
4
- <%= singular_table_name %>: lazaro_nixon
5
- user_agent: Device iOS
6
- ip_address: 127.0.0.1