authentication-zero 2.11.2 → 2.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/authentication-zero-api.md +1 -16
- data/lib/authentication_zero/version.rb +1 -1
- data/lib/generators/authentication/USAGE +1 -1
- data/lib/generators/authentication/authentication_generator.rb +6 -6
- data/lib/generators/authentication/templates/controllers/api/authentications/events_controller.rb.tt +1 -1
- data/lib/generators/authentication/templates/controllers/api/identity/email_verifications_controller.rb.tt +9 -7
- data/lib/generators/authentication/templates/controllers/api/identity/emails_controller.rb.tt +15 -8
- data/lib/generators/authentication/templates/controllers/api/identity/password_resets_controller.rb.tt +9 -9
- data/lib/generators/authentication/templates/controllers/api/passwords_controller.rb.tt +8 -8
- data/lib/generators/authentication/templates/controllers/api/registrations_controller.rb.tt +8 -5
- data/lib/generators/authentication/templates/controllers/api/sessions/sudos_controller.rb.tt +1 -1
- data/lib/generators/authentication/templates/controllers/api/sessions_controller.rb.tt +6 -6
- data/lib/generators/authentication/templates/controllers/html/authentications/events_controller.rb.tt +1 -1
- data/lib/generators/authentication/templates/controllers/html/identity/email_verifications_controller.rb.tt +5 -5
- data/lib/generators/authentication/templates/controllers/html/identity/emails_controller.rb.tt +13 -6
- data/lib/generators/authentication/templates/controllers/html/identity/password_resets_controller.rb.tt +7 -7
- data/lib/generators/authentication/templates/controllers/html/passwords_controller.rb.tt +6 -6
- data/lib/generators/authentication/templates/controllers/html/registrations_controller.rb.tt +5 -5
- data/lib/generators/authentication/templates/controllers/html/sessions/omniauth_controller.rb.tt +4 -4
- data/lib/generators/authentication/templates/controllers/html/sessions/sudos_controller.rb.tt +2 -2
- data/lib/generators/authentication/templates/controllers/html/sessions_controller.rb.tt +9 -9
- data/lib/generators/authentication/templates/controllers/html/two_factor_authentication/challenges_controller.rb.tt +5 -5
- data/lib/generators/authentication/templates/controllers/html/two_factor_authentication/totps_controller.rb.tt +13 -6
- data/lib/generators/authentication/templates/erb/authentications/events/{index.html.erb → index.html.erb.tt} +8 -8
- data/lib/generators/authentication/templates/erb/identity/emails/edit.html.erb.tt +6 -4
- data/lib/generators/authentication/templates/erb/identity/password_resets/edit.html.erb.tt +3 -3
- data/lib/generators/authentication/templates/erb/passwords/edit.html.erb.tt +3 -3
- data/lib/generators/authentication/templates/erb/registrations/new.html.erb.tt +3 -3
- data/lib/generators/authentication/templates/erb/session_mailer/signed_in_notification.html.erb.tt +1 -1
- data/lib/generators/authentication/templates/erb/session_mailer/signed_in_notification.text.erb.tt +1 -1
- data/lib/generators/authentication/templates/erb/sessions/new.html.erb.tt +3 -2
- data/lib/generators/authentication/templates/erb/two_factor_authentication/totps/new.html.erb.tt +2 -0
- data/lib/generators/authentication/templates/erb/{identity_mailer → user_mailer}/email_verify_confirmation.html.erb.tt +2 -2
- data/lib/generators/authentication/templates/erb/{identity_mailer → user_mailer}/email_verify_confirmation.text.erb.tt +2 -2
- data/lib/generators/authentication/templates/erb/{identity_mailer → user_mailer}/password_reset_provision.html.erb.tt +1 -1
- data/lib/generators/authentication/templates/erb/{identity_mailer → user_mailer}/password_reset_provision.text.erb.tt +1 -1
- data/lib/generators/authentication/templates/mailers/session_mailer.rb.tt +1 -1
- data/lib/generators/authentication/templates/mailers/user_mailer.rb.tt +19 -0
- data/lib/generators/authentication/templates/migrations/create_events_migration.rb.tt +1 -1
- data/lib/generators/authentication/templates/migrations/create_sessions_migration.rb.tt +1 -1
- data/lib/generators/authentication/templates/migrations/{create_table_migration.rb.tt → create_users_migration.rb.tt} +3 -3
- data/lib/generators/authentication/templates/models/current.rb.tt +2 -2
- data/lib/generators/authentication/templates/models/event.rb.tt +1 -1
- data/lib/generators/authentication/templates/models/session.rb.tt +3 -3
- data/lib/generators/authentication/templates/models/{model.rb.tt → user.rb.tt} +2 -2
- data/lib/generators/authentication/templates/test_unit/application_system_test_case.rb.tt +3 -3
- data/lib/generators/authentication/templates/test_unit/controllers/api/identity/email_verifications_controller_test.rb.tt +9 -9
- data/lib/generators/authentication/templates/test_unit/controllers/api/identity/emails_controller_test.rb.tt +1 -1
- data/lib/generators/authentication/templates/test_unit/controllers/api/identity/password_resets_controller_test.rb.tt +7 -7
- data/lib/generators/authentication/templates/test_unit/controllers/api/passwords_controller_test.rb.tt +1 -1
- data/lib/generators/authentication/templates/test_unit/controllers/api/registrations_controller_test.rb.tt +1 -1
- data/lib/generators/authentication/templates/test_unit/controllers/api/sessions_controller_test.rb.tt +6 -6
- data/lib/generators/authentication/templates/test_unit/controllers/html/identity/email_verifications_controller_test.rb.tt +9 -9
- data/lib/generators/authentication/templates/test_unit/controllers/html/identity/emails_controller_test.rb.tt +1 -1
- data/lib/generators/authentication/templates/test_unit/controllers/html/identity/password_resets_controller_test.rb.tt +7 -7
- data/lib/generators/authentication/templates/test_unit/controllers/html/passwords_controller_test.rb.tt +1 -1
- data/lib/generators/authentication/templates/test_unit/controllers/html/registrations_controller_test.rb.tt +1 -1
- data/lib/generators/authentication/templates/test_unit/controllers/html/sessions_controller_test.rb.tt +8 -8
- data/lib/generators/authentication/templates/test_unit/system/identity/emails_test.rb.tt +2 -2
- data/lib/generators/authentication/templates/test_unit/system/identity/password_resets_test.rb.tt +3 -3
- data/lib/generators/authentication/templates/test_unit/system/passwords_test.rb.tt +1 -1
- data/lib/generators/authentication/templates/test_unit/system/sessions_test.rb.tt +4 -4
- data/lib/generators/authentication/templates/test_unit/test_helper.rb.tt +4 -4
- data/lib/generators/authentication/templates/test_unit/{fixtures.yml.tt → users.yml.tt} +0 -0
- metadata +11 -11
- data/lib/generators/authentication/templates/mailers/identity_mailer.rb.tt +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 057a4b87d7c1e0266740e9ab1e2191dd453d87d5f16281b69913d19ef4d80902
|
4
|
+
data.tar.gz: f723896e9f01e4fcb8279851bd11603e9f5a2bd1faa3422fca95cd2dbaf617c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 23cf78206952d20cb762de004e8fee4e1493a9f4e276fc0f8dfc8f778b4af379fd490ad7650c1d54d31f9da878e293dc9876543e0aa3258518d57a08da84b2d0
|
7
|
+
data.tar.gz: 19a96cdec26dbad3aa959190c281497d2f6d0a2161d35691a61547d075818de3642b0b44f3035eed81382bea3f0aa928cc39c1fae3b427728d4273a666f68985
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
data/authentication-zero-api.md
CHANGED
@@ -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,6 +1,6 @@
|
|
1
1
|
require "rails/generators/active_record"
|
2
2
|
|
3
|
-
class AuthenticationGenerator < Rails::Generators::
|
3
|
+
class AuthenticationGenerator < Rails::Generators::Base
|
4
4
|
include ActiveRecord::Generators::Migration
|
5
5
|
|
6
6
|
class_option :api, type: :boolean, desc: "Generates API authentication"
|
@@ -54,13 +54,13 @@ class AuthenticationGenerator < Rails::Generators::NamedBase
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def create_migrations
|
57
|
-
migration_template "migrations/
|
57
|
+
migration_template "migrations/create_users_migration.rb", "#{db_migrate_path}/create_users.rb"
|
58
58
|
migration_template "migrations/create_sessions_migration.rb", "#{db_migrate_path}/create_sessions.rb"
|
59
59
|
migration_template "migrations/create_events_migration.rb", "#{db_migrate_path}/create_events.rb" if options.trackable?
|
60
60
|
end
|
61
61
|
|
62
62
|
def create_models
|
63
|
-
template "models/
|
63
|
+
template "models/user.rb", "app/models/user.rb"
|
64
64
|
template "models/session.rb", "app/models/session.rb"
|
65
65
|
template "models/current.rb", "app/models/current.rb"
|
66
66
|
template "models/locking.rb", "app/models/locking.rb" if options.lockable?
|
@@ -68,7 +68,7 @@ class AuthenticationGenerator < Rails::Generators::NamedBase
|
|
68
68
|
end
|
69
69
|
|
70
70
|
def create_fixture_file
|
71
|
-
template "test_unit/
|
71
|
+
template "test_unit/users.yml", "test/fixtures/users.yml"
|
72
72
|
end
|
73
73
|
|
74
74
|
def create_controllers
|
@@ -86,10 +86,10 @@ class AuthenticationGenerator < Rails::Generators::NamedBase
|
|
86
86
|
|
87
87
|
def create_views
|
88
88
|
if options.api?
|
89
|
-
directory "erb/
|
89
|
+
directory "erb/user_mailer", "app/views/user_mailer"
|
90
90
|
directory "erb/session_mailer", "app/views/session_mailer"
|
91
91
|
else
|
92
|
-
directory "erb/
|
92
|
+
directory "erb/user_mailer", "app/views/user_mailer"
|
93
93
|
directory "erb/session_mailer", "app/views/session_mailer"
|
94
94
|
|
95
95
|
directory "erb/identity", "app/views/identity"
|
@@ -1,26 +1,28 @@
|
|
1
1
|
class Identity::EmailVerificationsController < ApplicationController
|
2
2
|
skip_before_action :authenticate, only: :edit
|
3
3
|
|
4
|
-
before_action :
|
4
|
+
before_action :set_user, only: :edit
|
5
5
|
|
6
6
|
def edit
|
7
|
-
|
7
|
+
@user.update! verified: true
|
8
8
|
end
|
9
9
|
|
10
10
|
def create
|
11
|
-
|
11
|
+
UserMailer.with(user: Current.user).email_verify_confirmation.deliver_later
|
12
12
|
end
|
13
13
|
|
14
14
|
private
|
15
|
-
def
|
15
|
+
def set_user
|
16
16
|
<%- if code_verifiable? -%>
|
17
|
-
|
17
|
+
verified_user = User.find_by(email: params[:email])
|
18
18
|
|
19
|
-
|
19
|
+
if verified_user && verified_user.verification_code.value == params[:token]
|
20
|
+
@user = verified_user
|
21
|
+
else
|
20
22
|
render json: { error: "That email verification code is invalid" }, status: :bad_request
|
21
23
|
end
|
22
24
|
<%- else -%>
|
23
|
-
|
25
|
+
@user = User.where(email: params[:email]).find_signed!(params[:token], purpose: params[:email])
|
24
26
|
rescue
|
25
27
|
render json: { error: "That email verification link is invalid" }, status: :bad_request
|
26
28
|
<%- end -%>
|
data/lib/generators/authentication/templates/controllers/api/identity/emails_controller.rb.tt
CHANGED
@@ -1,22 +1,29 @@
|
|
1
1
|
class Identity::EmailsController < ApplicationController
|
2
|
-
|
2
|
+
<%- if options.sudoable? -%>
|
3
|
+
before_action :require_sudo
|
4
|
+
<%- end -%>
|
5
|
+
before_action :set_user
|
3
6
|
|
4
7
|
def update
|
5
|
-
|
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
|
8
|
-
|
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:
|
17
|
+
render json: @user.errors, status: :unprocessable_entity
|
11
18
|
end
|
12
19
|
end
|
13
20
|
|
14
21
|
private
|
15
|
-
def
|
16
|
-
|
22
|
+
def set_user
|
23
|
+
@user = Current.user
|
17
24
|
end
|
18
25
|
|
19
|
-
def
|
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 :
|
7
|
+
before_action :set_user, only: :update
|
8
8
|
|
9
9
|
def create
|
10
|
-
if
|
11
|
-
|
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
|
19
|
-
render json:
|
18
|
+
if @user.update(user_params)
|
19
|
+
render json: @user
|
20
20
|
else
|
21
|
-
render json:
|
21
|
+
render json: @user.errors, status: :unprocessable_entity
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
25
|
private
|
26
|
-
def
|
27
|
-
|
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
|
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 :
|
2
|
+
before_action :set_user
|
3
3
|
|
4
4
|
def update
|
5
|
-
if
|
5
|
+
if !@user.authenticate(params[:current_password])
|
6
6
|
render json: { error: "The current password you entered is incorrect" }, status: :bad_request
|
7
|
-
elsif
|
8
|
-
render json:
|
7
|
+
elsif @user.update(user_params)
|
8
|
+
render json: @user
|
9
9
|
else
|
10
|
-
render json:
|
10
|
+
render json: @user.errors, status: :unprocessable_entity
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
14
|
private
|
15
|
-
def
|
16
|
-
|
15
|
+
def set_user
|
16
|
+
@user = Current.user
|
17
17
|
end
|
18
18
|
|
19
|
-
def
|
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
|
-
|
5
|
+
@user = User.new(user_params)
|
6
6
|
|
7
|
-
if
|
8
|
-
|
7
|
+
if @user.save
|
8
|
+
session = @user.sessions.create!
|
9
|
+
response.set_header "X-Session-Token", session.signed_id
|
10
|
+
|
11
|
+
render json: @user, status: :created
|
9
12
|
else
|
10
|
-
render json:
|
13
|
+
render json: @user.errors, status: :unprocessable_entity
|
11
14
|
end
|
12
15
|
end
|
13
16
|
|
14
17
|
private
|
15
|
-
def
|
18
|
+
def user_params
|
16
19
|
params.permit(:email, :password, :password_confirmation)
|
17
20
|
end
|
18
21
|
end
|
data/lib/generators/authentication/templates/controllers/api/sessions/sudos_controller.rb.tt
CHANGED
@@ -2,7 +2,7 @@ class Sessions::SudosController < ApplicationController
|
|
2
2
|
def create
|
3
3
|
session = Current.session
|
4
4
|
|
5
|
-
if session
|
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
|
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
|
-
|
15
|
+
user = User.find_by(email: params[:email])
|
16
16
|
|
17
|
-
if
|
18
|
-
@session =
|
19
|
-
response.set_header
|
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
|
33
|
+
@session = Current.user.sessions.find(params[:id])
|
34
34
|
end
|
35
35
|
end
|
@@ -1,21 +1,21 @@
|
|
1
1
|
class Identity::EmailVerificationsController < ApplicationController
|
2
2
|
skip_before_action :authenticate, only: :edit
|
3
3
|
|
4
|
-
before_action :
|
4
|
+
before_action :set_user, only: :edit
|
5
5
|
|
6
6
|
def edit
|
7
|
-
|
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
|
-
|
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
|
18
|
-
|
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
|
data/lib/generators/authentication/templates/controllers/html/identity/emails_controller.rb.tt
CHANGED
@@ -1,13 +1,20 @@
|
|
1
1
|
class Identity::EmailsController < ApplicationController
|
2
|
-
|
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
|
-
|
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
|
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
|
19
|
-
|
25
|
+
def set_user
|
26
|
+
@user = Current.user
|
20
27
|
end
|
21
28
|
|
22
|
-
def
|
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 :
|
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
|
17
|
-
|
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
|
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
|
34
|
-
|
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
|
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 :
|
2
|
+
before_action :set_user
|
3
3
|
|
4
4
|
def edit
|
5
5
|
end
|
6
6
|
|
7
7
|
def update
|
8
|
-
if
|
8
|
+
if !@user.authenticate(params[:current_password])
|
9
9
|
redirect_to edit_password_path, alert: "The current password you entered is incorrect"
|
10
|
-
elsif
|
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
|
19
|
-
|
18
|
+
def set_user
|
19
|
+
@user = Current.user
|
20
20
|
end
|
21
21
|
|
22
|
-
def
|
22
|
+
def user_params
|
23
23
|
params.permit(:password, :password_confirmation)
|
24
24
|
end
|
25
25
|
end
|
data/lib/generators/authentication/templates/controllers/html/registrations_controller.rb.tt
CHANGED
@@ -2,14 +2,14 @@ class RegistrationsController < ApplicationController
|
|
2
2
|
skip_before_action :authenticate
|
3
3
|
|
4
4
|
def new
|
5
|
-
|
5
|
+
@user = User.new
|
6
6
|
end
|
7
7
|
|
8
8
|
def create
|
9
|
-
|
9
|
+
@user = User.new(user_params)
|
10
10
|
|
11
|
-
if
|
12
|
-
session =
|
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
|
22
|
+
def user_params
|
23
23
|
params.permit(:email, :password, :password_confirmation)
|
24
24
|
end
|
25
25
|
end
|
data/lib/generators/authentication/templates/controllers/html/sessions/omniauth_controller.rb.tt
CHANGED
@@ -3,10 +3,10 @@ class Sessions::OmniauthController < ApplicationController
|
|
3
3
|
skip_before_action :authenticate
|
4
4
|
|
5
5
|
def create
|
6
|
-
|
6
|
+
@user = User.where(omniauth_params).first_or_initialize(user_params)
|
7
7
|
|
8
|
-
if
|
9
|
-
session =
|
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
|
27
|
+
def user_params
|
28
28
|
{ email: omniauth.info.email, password: SecureRandom::base58, verified: true }
|
29
29
|
end
|
30
30
|
|
data/lib/generators/authentication/templates/controllers/html/sessions/sudos_controller.rb.tt
CHANGED
@@ -6,9 +6,9 @@ class Sessions::SudosController < ApplicationController
|
|
6
6
|
session = Current.session
|
7
7
|
|
8
8
|
<%- if omniauthable? -%>
|
9
|
-
if session
|
9
|
+
if session.user.authenticate(params[:password]) || session.user.provider
|
10
10
|
<%- else -%>
|
11
|
-
if session
|
11
|
+
if session.user.authenticate(params[:password])
|
12
12
|
<%- end -%>
|
13
13
|
session.sudo.mark; redirect_to(params[:proceed_to_url])
|
14
14
|
else
|
@@ -4,30 +4,30 @@ class SessionsController < ApplicationController
|
|
4
4
|
before_action :set_session, only: :destroy
|
5
5
|
|
6
6
|
def index
|
7
|
-
@sessions = Current
|
7
|
+
@sessions = Current.user.sessions.order(created_at: :desc)
|
8
8
|
end
|
9
9
|
|
10
10
|
def new
|
11
|
-
|
11
|
+
@user = User.new
|
12
12
|
end
|
13
13
|
|
14
14
|
def create
|
15
|
-
|
15
|
+
user = User.find_by(email: params[:email])
|
16
16
|
|
17
|
-
if
|
17
|
+
if user && user.authenticate(params[:password])
|
18
18
|
<%- if two_factor? -%>
|
19
|
-
if
|
20
|
-
signed_id =
|
19
|
+
if user.otp_secret
|
20
|
+
signed_id = user.signed_id(purpose: :authentication_challenge, expires_in: 20.minutes)
|
21
21
|
|
22
22
|
redirect_to new_two_factor_authentication_challenge_path(token: signed_id)
|
23
23
|
else
|
24
|
-
@session =
|
24
|
+
@session = user.sessions.create!
|
25
25
|
cookies.signed.permanent[:session_token] = { value: @session.id, httponly: true }
|
26
26
|
|
27
27
|
redirect_to root_path, notice: "Signed in successfully"
|
28
28
|
end
|
29
29
|
<%- else -%>
|
30
|
-
@session =
|
30
|
+
@session = user.sessions.create!
|
31
31
|
cookies.signed.permanent[:session_token] = { value: @session.id, httponly: true }
|
32
32
|
|
33
33
|
redirect_to root_path, notice: "Signed in successfully"
|
@@ -43,6 +43,6 @@ class SessionsController < ApplicationController
|
|
43
43
|
|
44
44
|
private
|
45
45
|
def set_session
|
46
|
-
@session = Current
|
46
|
+
@session = Current.user.sessions.find(params[:id])
|
47
47
|
end
|
48
48
|
end
|