authentication-zero 2.16.13 → 2.16.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/CI.yml +45 -20
- data/.rubocop.yml +3 -10
- data/.ruby-version +1 -1
- data/CHANGELOG.md +10 -0
- data/Gemfile.lock +1 -1
- data/README.md +1 -0
- data/lib/authentication_zero/version.rb +1 -1
- data/lib/generators/authentication/authentication_generator.rb +19 -8
- data/lib/generators/authentication/templates/controllers/api/identity/emails_controller.rb.tt +1 -1
- data/lib/generators/authentication/templates/controllers/html/identity/emails_controller.rb.tt +1 -1
- data/lib/generators/authentication/templates/controllers/html/invitations_controller.rb.tt +1 -1
- data/lib/generators/authentication/templates/controllers/html/masquerades_controller.rb.tt +20 -0
- data/lib/generators/authentication/templates/controllers/html/sessions/omniauth_controller.rb.tt +1 -1
- data/lib/generators/authentication/templates/erb/home/index.html.erb.tt +5 -0
- data/lib/generators/authentication/templates/models/user.rb.tt +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 85fbe83273139a893939d4f20c3a06de269e0cea2b5fe3a7994f8d66919c3532
|
4
|
+
data.tar.gz: 63396f6a2ceb39fc3a49be717a6ffc7097c29e6782b7a351ca0d6f3bb7f2cae6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0899627eceb12252ec843541a19ec9da8de2e0d4ab12e76e43f34e1117597be485f58a090a66f825f2a1fdb1affe5c83cb55502e2deb7a681e2d70e7578ede31'
|
7
|
+
data.tar.gz: 8ee00bb247a6989e0c930b33ffefc5c546f6e2c4161d77297344343ec5585b6c80f5b11dd18cd06937b6264d4abb1d89b9f47d1ab80494201bf5d523cb289f86
|
data/.github/workflows/CI.yml
CHANGED
@@ -5,15 +5,12 @@
|
|
5
5
|
# This workflow will install a prebuilt Ruby version, install dependencies, and
|
6
6
|
# run tests and linters.
|
7
7
|
name: "Generate sample app and run tests"
|
8
|
-
on:
|
9
|
-
|
10
|
-
branches: ["*"]
|
8
|
+
on: [push]
|
9
|
+
|
11
10
|
jobs:
|
12
11
|
test_html:
|
13
12
|
name: 🧪 Run HTML Tests
|
14
13
|
runs-on: ubuntu-latest
|
15
|
-
env:
|
16
|
-
RAILS_ENV: test
|
17
14
|
steps:
|
18
15
|
- name: Checkout code
|
19
16
|
uses: actions/checkout@v3
|
@@ -24,25 +21,39 @@ jobs:
|
|
24
21
|
bundler-cache: true
|
25
22
|
|
26
23
|
- name: Install the latest Rails gem
|
27
|
-
run: gem install rails
|
24
|
+
run: gem install rails -v "~> 7.0.0"
|
25
|
+
|
26
|
+
- name: Install Rubocop
|
27
|
+
run: gem install rubocop rubocop-performance rubocop-minitest rubocop-packaging rubocop-minitest rubocop-rails
|
28
28
|
|
29
|
-
- name: Create fresh Rails app
|
30
|
-
env:
|
31
|
-
CI: true
|
29
|
+
- name: Create fresh Rails app and run generator
|
32
30
|
run: |
|
33
31
|
rails new test-app
|
32
|
+
cp .rubocop.yml test-app/.rubocop.yml
|
34
33
|
cd test-app
|
35
|
-
bundle add authentication-zero --
|
34
|
+
bundle add authentication-zero --path ..
|
36
35
|
bin/rails generate authentication
|
37
36
|
bundle install
|
38
37
|
bin/rails db:migrate
|
38
|
+
|
39
|
+
- name: Rubocop
|
40
|
+
run: cd test-app && rubocop
|
41
|
+
|
42
|
+
- name: Install Brakeman
|
43
|
+
run: gem install brakeman
|
44
|
+
|
45
|
+
- name: Brakeman
|
46
|
+
run: cd test-app && brakeman
|
47
|
+
|
48
|
+
- name: Tests
|
49
|
+
run: |
|
50
|
+
cd test-app
|
39
51
|
bin/rails test
|
40
52
|
bin/rails test:system
|
53
|
+
|
41
54
|
test_api:
|
42
55
|
name: 🧪 Run API Tests
|
43
56
|
runs-on: ubuntu-latest
|
44
|
-
env:
|
45
|
-
RAILS_ENV: test
|
46
57
|
steps:
|
47
58
|
- name: Checkout code
|
48
59
|
uses: actions/checkout@v3
|
@@ -53,16 +64,30 @@ jobs:
|
|
53
64
|
bundler-cache: true
|
54
65
|
|
55
66
|
- name: Install the latest Rails gem
|
56
|
-
run: gem install rails
|
67
|
+
run: gem install rails -v "~> 7.0.0"
|
57
68
|
|
58
|
-
- name:
|
59
|
-
|
60
|
-
|
69
|
+
- name: Install Rubocop
|
70
|
+
run: gem install rubocop rubocop-performance rubocop-minitest rubocop-packaging rubocop-minitest rubocop-rails
|
71
|
+
|
72
|
+
- name: Create fresh Rails app and run generator
|
61
73
|
run: |
|
62
|
-
rails new test-app
|
74
|
+
rails new test-app
|
75
|
+
cp .rubocop.yml test-app/.rubocop.yml
|
63
76
|
cd test-app
|
64
|
-
bundle add authentication-zero --
|
65
|
-
bin/rails generate authentication
|
77
|
+
bundle add authentication-zero --path ..
|
78
|
+
bin/rails generate authentication --api
|
66
79
|
bundle install
|
67
80
|
bin/rails db:migrate
|
68
|
-
|
81
|
+
|
82
|
+
- name: Rubocop
|
83
|
+
run: cd test-app && rubocop
|
84
|
+
|
85
|
+
- name: Install Brakeman
|
86
|
+
run: gem install brakeman
|
87
|
+
|
88
|
+
- name: Brakeman
|
89
|
+
run: cd test-app && brakeman
|
90
|
+
|
91
|
+
- name: Tests
|
92
|
+
run: cd test-app && bin/rails test
|
93
|
+
|
data/.rubocop.yml
CHANGED
@@ -1,15 +1,8 @@
|
|
1
|
-
inherit_from: https://raw.githubusercontent.com/rails/rails/
|
1
|
+
inherit_from: https://raw.githubusercontent.com/rails/rails/v7.0.4/.rubocop.yml
|
2
2
|
|
3
|
-
|
3
|
+
Style/HashSyntax:
|
4
4
|
Exclude:
|
5
|
-
-
|
5
|
+
- Gemfile
|
6
6
|
|
7
7
|
Style/FrozenStringLiteralComment:
|
8
8
|
Enabled: false
|
9
|
-
|
10
|
-
Style/StringLiterals:
|
11
|
-
Enabled: true
|
12
|
-
EnforcedStyle: double_quotes
|
13
|
-
Include:
|
14
|
-
- 'app/**/*'
|
15
|
-
- 'test/**/*'
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.2.2
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
## Authentication Zero 2.16.15 ##
|
2
|
+
|
3
|
+
* Add sign-in as button functionallity (--masqueradable)
|
4
|
+
|
5
|
+
## Authentication Zero 2.16.14 ##
|
6
|
+
|
7
|
+
* Remove password requirements
|
8
|
+
* Rubocop compliant
|
9
|
+
* Brakeman compliant
|
10
|
+
|
1
11
|
## Authentication Zero 2.16.13 ##
|
2
12
|
|
3
13
|
* Enable resend invitation
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -31,6 +31,7 @@ Since Authentication Zero generates this code into your application instead of b
|
|
31
31
|
- Two factor authentication (--two-factor)
|
32
32
|
- Social Login with OmniAuth (--omniauthable)
|
33
33
|
- Send invitations (--invitable)
|
34
|
+
- Sign-in as button functionallity (--masqueradable)
|
34
35
|
- Verify email using a link with token
|
35
36
|
- Verify email using a six random digits code for api (--code-verifiable)
|
36
37
|
- Ask password before sensitive data changes, aka: sudo (--sudoable)
|
@@ -14,6 +14,7 @@ class AuthenticationGenerator < Rails::Generators::Base
|
|
14
14
|
class_option :trackable, type: :boolean, desc: "Add activity log support"
|
15
15
|
class_option :two_factor, type: :boolean, desc: "Add two factor authentication"
|
16
16
|
class_option :invitable, type: :boolean, desc: "Add sending invitations"
|
17
|
+
class_option :masqueradable, type: :boolean, desc: "Add sign-in as button functionallity"
|
17
18
|
|
18
19
|
source_root File.expand_path("templates", __dir__)
|
19
20
|
|
@@ -86,6 +87,7 @@ class AuthenticationGenerator < Rails::Generators::Base
|
|
86
87
|
template "controllers/#{format_folder}/sessions_controller.rb", "app/controllers/sessions_controller.rb"
|
87
88
|
template "controllers/#{format_folder}/passwords_controller.rb", "app/controllers/passwords_controller.rb"
|
88
89
|
template "controllers/#{format_folder}/invitations_controller.rb", "app/controllers/invitations_controller.rb" if invitable?
|
90
|
+
template "controllers/#{format_folder}/masquerades_controller.rb", "app/controllers/masquerades_controller.rb" if masqueradable?
|
89
91
|
template "controllers/#{format_folder}/registrations_controller.rb", "app/controllers/registrations_controller.rb"
|
90
92
|
template "controllers/#{format_folder}/home_controller.rb", "app/controllers/home_controller.rb" unless options.api?
|
91
93
|
template "controllers/#{format_folder}/sessions/sudos_controller.rb", "app/controllers/sessions/sudos_controller.rb" if sudoable?
|
@@ -125,7 +127,7 @@ class AuthenticationGenerator < Rails::Generators::Base
|
|
125
127
|
end
|
126
128
|
|
127
129
|
def add_routes
|
128
|
-
route
|
130
|
+
route 'root "home#index"' unless options.api?
|
129
131
|
|
130
132
|
if sudoable?
|
131
133
|
route "resource :sudo, only: [:new, :create]", namespace: :sessions
|
@@ -135,10 +137,14 @@ class AuthenticationGenerator < Rails::Generators::Base
|
|
135
137
|
route "resource :passwordless, only: [:new, :edit, :create]", namespace: :sessions
|
136
138
|
end
|
137
139
|
|
140
|
+
if masqueradable?
|
141
|
+
route 'post "users/:user_id/masquerade", to: "masquerades#create", as: :user_masquerade'
|
142
|
+
end
|
143
|
+
|
138
144
|
if omniauthable?
|
139
|
-
route
|
140
|
-
route
|
141
|
-
route
|
145
|
+
route 'post "/auth/:provider/callback", to: "sessions/omniauth#create"'
|
146
|
+
route 'get "/auth/:provider/callback", to: "sessions/omniauth#create"'
|
147
|
+
route 'get "/auth/failure", to: "sessions/omniauth#failure"'
|
142
148
|
end
|
143
149
|
|
144
150
|
if two_factor?
|
@@ -153,13 +159,14 @@ class AuthenticationGenerator < Rails::Generators::Base
|
|
153
159
|
route "resource :password_reset, only: [:new, :edit, :create, :update]", namespace: :identity
|
154
160
|
route "resource :email_verification, only: [:show, :create]", namespace: :identity
|
155
161
|
route "resource :email, only: [:edit, :update]", namespace: :identity
|
162
|
+
|
156
163
|
route "resource :invitation, only: [:new, :create]" if invitable?
|
157
164
|
route "resource :password, only: [:edit, :update]"
|
158
165
|
route "resources :sessions, only: [:index, :show, :destroy]"
|
159
|
-
route
|
160
|
-
route
|
161
|
-
route
|
162
|
-
route
|
166
|
+
route 'post "sign_up", to: "registrations#create"'
|
167
|
+
route 'get "sign_up", to: "registrations#new"' unless options.api?
|
168
|
+
route 'post "sign_in", to: "sessions#create"'
|
169
|
+
route 'get "sign_in", to: "sessions#new"' unless options.api?
|
163
170
|
end
|
164
171
|
|
165
172
|
def create_test_files
|
@@ -198,6 +205,10 @@ class AuthenticationGenerator < Rails::Generators::Base
|
|
198
205
|
options.invitable? && !options.api?
|
199
206
|
end
|
200
207
|
|
208
|
+
def masqueradable?
|
209
|
+
options.masqueradable? && !options.api?
|
210
|
+
end
|
211
|
+
|
201
212
|
def sudoable?
|
202
213
|
options.sudoable? && !options.api?
|
203
214
|
end
|
data/lib/generators/authentication/templates/controllers/api/identity/emails_controller.rb.tt
CHANGED
@@ -2,7 +2,7 @@ class Identity::EmailsController < ApplicationController
|
|
2
2
|
before_action :set_user
|
3
3
|
|
4
4
|
def update
|
5
|
-
|
5
|
+
if !@user.authenticate(params[:current_password])
|
6
6
|
render json: { error: "The password you entered is incorrect" }, status: :bad_request
|
7
7
|
elsif @user.update(user_params)
|
8
8
|
render_show
|
data/lib/generators/authentication/templates/controllers/html/identity/emails_controller.rb.tt
CHANGED
@@ -5,7 +5,7 @@ class Identity::EmailsController < ApplicationController
|
|
5
5
|
end
|
6
6
|
|
7
7
|
def update
|
8
|
-
|
8
|
+
if !@user.authenticate(params[:current_password])
|
9
9
|
redirect_to edit_identity_email_path, alert: "The password you entered is incorrect"
|
10
10
|
elsif @user.update(user_params)
|
11
11
|
redirect_to_root
|
@@ -16,7 +16,7 @@ class InvitationsController < ApplicationController
|
|
16
16
|
|
17
17
|
private
|
18
18
|
def user_params
|
19
|
-
params.permit(:email).merge(password: SecureRandom
|
19
|
+
params.permit(:email).merge(password: SecureRandom.base58, verified: true)
|
20
20
|
end
|
21
21
|
|
22
22
|
def send_invitation_instructions
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class MasqueradesController < ApplicationController
|
2
|
+
before_action :authorize
|
3
|
+
before_action :set_user
|
4
|
+
|
5
|
+
def create
|
6
|
+
session = @user.sessions.create!
|
7
|
+
cookies.signed.permanent[:session_token] = { value: session.id, httponly: true }
|
8
|
+
|
9
|
+
redirect_to root_path, notice: "Signed in successfully"
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
def set_user
|
14
|
+
@user = User.find(params[:user_id])
|
15
|
+
end
|
16
|
+
|
17
|
+
def authorize
|
18
|
+
redirect_to(root_path, alert: "You must be in development") unless Rails.env.development?
|
19
|
+
end
|
20
|
+
end
|
data/lib/generators/authentication/templates/controllers/html/sessions/omniauth_controller.rb.tt
CHANGED
@@ -21,7 +21,7 @@ class Sessions::OmniauthController < ApplicationController
|
|
21
21
|
|
22
22
|
private
|
23
23
|
def user_params
|
24
|
-
{ email: omniauth.info.email, password: SecureRandom
|
24
|
+
{ email: omniauth.info.email, password: SecureRandom.base58, verified: true }
|
25
25
|
end
|
26
26
|
|
27
27
|
def omniauth_params
|
@@ -24,6 +24,11 @@
|
|
24
24
|
<%%= link_to "Send invitation", new_invitation_path %>
|
25
25
|
</div>
|
26
26
|
<%- end -%>
|
27
|
+
<%- if masqueradable? %>
|
28
|
+
<div>
|
29
|
+
<%%= button_to "Signin as last user", user_masquerade_path(User.last) %>
|
30
|
+
</div>
|
31
|
+
<%- end -%>
|
27
32
|
<%- if two_factor? %>
|
28
33
|
<div>
|
29
34
|
<%%= link_to "Two-Factor Authentication", new_two_factor_authentication_totp_path %>
|
@@ -16,7 +16,7 @@ class User < ApplicationRecord
|
|
16
16
|
<%- end -%>
|
17
17
|
|
18
18
|
validates :email, presence: true, uniqueness: true, format: { with: URI::MailTo::EMAIL_REGEXP }
|
19
|
-
validates :password, allow_nil: true, length: { minimum: 12 }
|
19
|
+
validates :password, allow_nil: true, length: { minimum: 12 }
|
20
20
|
<%- if options.pwned? -%>
|
21
21
|
validates :password, not_pwned: { message: "might easily be guessed" }
|
22
22
|
<%- 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.16.
|
4
|
+
version: 2.16.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nixon
|
@@ -52,6 +52,7 @@ files:
|
|
52
52
|
- lib/generators/authentication/templates/controllers/html/identity/emails_controller.rb.tt
|
53
53
|
- lib/generators/authentication/templates/controllers/html/identity/password_resets_controller.rb.tt
|
54
54
|
- lib/generators/authentication/templates/controllers/html/invitations_controller.rb.tt
|
55
|
+
- lib/generators/authentication/templates/controllers/html/masquerades_controller.rb.tt
|
55
56
|
- lib/generators/authentication/templates/controllers/html/passwords_controller.rb.tt
|
56
57
|
- lib/generators/authentication/templates/controllers/html/registrations_controller.rb.tt
|
57
58
|
- lib/generators/authentication/templates/controllers/html/sessions/omniauth_controller.rb.tt
|
@@ -135,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
135
136
|
- !ruby/object:Gem::Version
|
136
137
|
version: '0'
|
137
138
|
requirements: []
|
138
|
-
rubygems_version: 3.
|
139
|
+
rubygems_version: 3.4.10
|
139
140
|
signing_key:
|
140
141
|
specification_version: 4
|
141
142
|
summary: An authentication system generator for Rails applications
|