rodauth-rails 1.3.1 → 1.4.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 +26 -0
- data/README.md +10 -103
- data/lib/generators/rodauth/install_generator.rb +9 -10
- data/lib/generators/rodauth/migration/{account_expiration.erb → active_record/account_expiration.erb} +0 -0
- data/lib/generators/rodauth/migration/{active_sessions.erb → active_record/active_sessions.erb} +0 -0
- data/lib/generators/rodauth/migration/{audit_logging.erb → active_record/audit_logging.erb} +0 -0
- data/lib/generators/rodauth/migration/{base.erb → active_record/base.erb} +0 -0
- data/lib/generators/rodauth/migration/{disallow_password_reuse.erb → active_record/disallow_password_reuse.erb} +1 -1
- data/lib/generators/rodauth/migration/{email_auth.erb → active_record/email_auth.erb} +0 -0
- data/lib/generators/rodauth/migration/{jwt_refresh.erb → active_record/jwt_refresh.erb} +0 -0
- data/lib/generators/rodauth/migration/{lockout.erb → active_record/lockout.erb} +0 -0
- data/lib/generators/rodauth/migration/{otp.erb → active_record/otp.erb} +0 -0
- data/lib/generators/rodauth/migration/{password_expiration.erb → active_record/password_expiration.erb} +0 -0
- data/lib/generators/rodauth/migration/{recovery_codes.erb → active_record/recovery_codes.erb} +0 -0
- data/lib/generators/rodauth/migration/{remember.erb → active_record/remember.erb} +0 -0
- data/lib/generators/rodauth/migration/{reset_password.erb → active_record/reset_password.erb} +0 -0
- data/lib/generators/rodauth/migration/{single_session.erb → active_record/single_session.erb} +0 -0
- data/lib/generators/rodauth/migration/{sms_codes.erb → active_record/sms_codes.erb} +0 -0
- data/lib/generators/rodauth/migration/{verify_account.erb → active_record/verify_account.erb} +0 -0
- data/lib/generators/rodauth/migration/{verify_login_change.erb → active_record/verify_login_change.erb} +0 -0
- data/lib/generators/rodauth/migration/{webauthn.erb → active_record/webauthn.erb} +0 -0
- data/lib/generators/rodauth/migration/sequel/account_expiration.erb +7 -0
- data/lib/generators/rodauth/migration/sequel/active_sessions.erb +8 -0
- data/lib/generators/rodauth/migration/sequel/audit_logging.erb +17 -0
- data/lib/generators/rodauth/migration/sequel/base.erb +25 -0
- data/lib/generators/rodauth/migration/sequel/disallow_password_reuse.erb +6 -0
- data/lib/generators/rodauth/migration/sequel/email_auth.erb +7 -0
- data/lib/generators/rodauth/migration/sequel/jwt_refresh.erb +8 -0
- data/lib/generators/rodauth/migration/sequel/lockout.erb +11 -0
- data/lib/generators/rodauth/migration/sequel/otp.erb +7 -0
- data/lib/generators/rodauth/migration/sequel/password_expiration.erb +5 -0
- data/lib/generators/rodauth/migration/sequel/recovery_codes.erb +6 -0
- data/lib/generators/rodauth/migration/sequel/remember.erb +6 -0
- data/lib/generators/rodauth/migration/sequel/reset_password.erb +7 -0
- data/lib/generators/rodauth/migration/sequel/single_session.erb +5 -0
- data/lib/generators/rodauth/migration/sequel/sms_codes.erb +8 -0
- data/lib/generators/rodauth/migration/sequel/verify_account.erb +7 -0
- data/lib/generators/rodauth/migration/sequel/verify_login_change.erb +7 -0
- data/lib/generators/rodauth/migration/sequel/webauthn.erb +13 -0
- data/lib/generators/rodauth/migration_generator.rb +89 -9
- data/lib/generators/rodauth/templates/app/mailers/rodauth_mailer.rb +38 -28
- data/lib/generators/rodauth/templates/app/misc/rodauth_main.rb +6 -6
- data/lib/generators/rodauth/templates/app/models/account.rb +8 -0
- data/lib/generators/rodauth/templates/app/views/rodauth_mailer/verify_login_change.text.erb +2 -2
- data/lib/generators/rodauth/templates/db/migrate/create_rodauth.rb +8 -0
- data/lib/rodauth/rails/middleware.rb +9 -0
- data/lib/rodauth/rails/model.rb +2 -97
- data/lib/rodauth/rails/version.rb +1 -1
- data/lib/rodauth/rails.rb +2 -1
- data/rodauth-rails.gemspec +1 -0
- metadata +52 -22
- data/lib/generators/rodauth/migration_helpers.rb +0 -77
- data/lib/rodauth/rails/model/associations.rb +0 -195
@@ -1,54 +1,64 @@
|
|
1
1
|
class RodauthMailer < ApplicationMailer
|
2
|
-
def verify_account(account_id, key)
|
3
|
-
@email_link =
|
4
|
-
@account =
|
2
|
+
def verify_account(name = nil, account_id, key)
|
3
|
+
@email_link = email_link(name, :verify_account, account_id, key)
|
4
|
+
@account = find_account(name, account_id)
|
5
5
|
|
6
|
-
mail to: @account.email, subject: rodauth.verify_account_email_subject
|
6
|
+
mail to: @account.email, subject: rodauth(name).verify_account_email_subject
|
7
7
|
end
|
8
8
|
|
9
|
-
def reset_password(account_id, key)
|
10
|
-
@email_link =
|
11
|
-
@account =
|
9
|
+
def reset_password(name = nil, account_id, key)
|
10
|
+
@email_link = email_link(name, :reset_password, account_id, key)
|
11
|
+
@account = find_account(name, account_id)
|
12
12
|
|
13
|
-
mail to: @account.email, subject: rodauth.reset_password_email_subject
|
13
|
+
mail to: @account.email, subject: rodauth(name).reset_password_email_subject
|
14
14
|
end
|
15
15
|
|
16
|
-
def verify_login_change(
|
17
|
-
@
|
18
|
-
@
|
19
|
-
@
|
20
|
-
@account = Account.find(account_id)
|
16
|
+
def verify_login_change(name = nil, account_id, key)
|
17
|
+
@email_link = email_link(name, :verify_login_change, account_id, key)
|
18
|
+
@account = find_account(name, account_id)
|
19
|
+
@new_email = @account.login_change_key.login
|
21
20
|
|
22
|
-
mail to:
|
21
|
+
mail to: @new_email, subject: rodauth(name).verify_login_change_email_subject
|
23
22
|
end
|
24
23
|
|
25
|
-
def password_changed(account_id)
|
26
|
-
@account =
|
24
|
+
def password_changed(name = nil, account_id)
|
25
|
+
@account = find_account(name, account_id)
|
27
26
|
|
28
|
-
mail to: @account.email, subject: rodauth.password_changed_email_subject
|
27
|
+
mail to: @account.email, subject: rodauth(name).password_changed_email_subject
|
29
28
|
end
|
30
29
|
|
31
|
-
# def email_auth(account_id, key)
|
32
|
-
# @email_link =
|
33
|
-
# @account =
|
30
|
+
# def email_auth(name = nil, account_id, key)
|
31
|
+
# @email_link = email_link(name, :email_auth, account_id, key)
|
32
|
+
# @account = find_account(name, account_id)
|
34
33
|
|
35
|
-
# mail to: @account.email, subject: rodauth.email_auth_email_subject
|
34
|
+
# mail to: @account.email, subject: rodauth(name).email_auth_email_subject
|
36
35
|
# end
|
37
36
|
|
38
|
-
# def unlock_account(account_id, key)
|
39
|
-
# @email_link =
|
40
|
-
# @account =
|
37
|
+
# def unlock_account(name = nil, account_id, key)
|
38
|
+
# @email_link = email_link(name, :unlock_account, account_id, key)
|
39
|
+
# @account = find_account(name, account_id)
|
41
40
|
|
42
|
-
# mail to: @account.email, subject: rodauth.unlock_account_email_subject
|
41
|
+
# mail to: @account.email, subject: rodauth(name).unlock_account_email_subject
|
43
42
|
# end
|
44
43
|
|
45
44
|
private
|
46
45
|
|
47
|
-
def
|
48
|
-
|
46
|
+
def find_account(_name, account_id)
|
47
|
+
<% if defined?(ActiveRecord::Railtie) -%>
|
48
|
+
Account.find(account_id)
|
49
|
+
<% else -%>
|
50
|
+
Account.with_pk!(account_id)
|
51
|
+
<% end -%>
|
49
52
|
end
|
50
53
|
|
51
|
-
def
|
54
|
+
def email_link(name, action, account_id, key)
|
55
|
+
instance = rodauth(name)
|
56
|
+
instance.instance_variable_set(:@account, { id: account_id })
|
57
|
+
instance.instance_variable_set(:"@#{action}_key_value", key)
|
58
|
+
instance.public_send(:"#{action}_email_link")
|
59
|
+
end
|
60
|
+
|
61
|
+
def rodauth(name)
|
52
62
|
RodauthApp.rodauth(name).allocate
|
53
63
|
end
|
54
64
|
end
|
@@ -56,22 +56,22 @@ class RodauthMain < Rodauth::Rails::Auth
|
|
56
56
|
# ==> Emails
|
57
57
|
# Use a custom mailer for delivering authentication emails.
|
58
58
|
create_reset_password_email do
|
59
|
-
RodauthMailer.reset_password(account_id, reset_password_key_value)
|
59
|
+
RodauthMailer.reset_password(*self.class.configuration_name, account_id, reset_password_key_value)
|
60
60
|
end
|
61
61
|
create_verify_account_email do
|
62
|
-
RodauthMailer.verify_account(account_id, verify_account_key_value)
|
62
|
+
RodauthMailer.verify_account(*self.class.configuration_name, account_id, verify_account_key_value)
|
63
63
|
end
|
64
64
|
create_verify_login_change_email do |_login|
|
65
|
-
RodauthMailer.verify_login_change(
|
65
|
+
RodauthMailer.verify_login_change(*self.class.configuration_name, account_id, verify_login_change_key_value)
|
66
66
|
end
|
67
67
|
create_password_changed_email do
|
68
|
-
RodauthMailer.password_changed(account_id)
|
68
|
+
RodauthMailer.password_changed(*self.class.configuration_name, account_id)
|
69
69
|
end
|
70
70
|
# create_email_auth_email do
|
71
|
-
# RodauthMailer.email_auth(account_id, email_auth_key_value)
|
71
|
+
# RodauthMailer.email_auth(*self.class.configuration_name, account_id, email_auth_key_value)
|
72
72
|
# end
|
73
73
|
# create_unlock_account_email do
|
74
|
-
# RodauthMailer.unlock_account(account_id, unlock_account_key_value)
|
74
|
+
# RodauthMailer.unlock_account(*self.class.configuration_name, account_id, unlock_account_key_value)
|
75
75
|
# end
|
76
76
|
send_email do |email|
|
77
77
|
# queue email delivery on the mailer after the transaction commits
|
@@ -1,3 +1,4 @@
|
|
1
|
+
<% if defined?(ActiveRecord::Railtie) -%>
|
1
2
|
class Account < ApplicationRecord
|
2
3
|
include Rodauth::Rails.model
|
3
4
|
<% if ActiveRecord.version >= Gem::Version.new("7.0") -%>
|
@@ -6,3 +7,10 @@ class Account < ApplicationRecord
|
|
6
7
|
enum status: { unverified: 1, verified: 2, closed: 3 }
|
7
8
|
<% end -%>
|
8
9
|
end
|
10
|
+
<% else -%>
|
11
|
+
class Account < Sequel::Model
|
12
|
+
include Rodauth::Rails.model
|
13
|
+
plugin :enum
|
14
|
+
enum :status, unverified: 1, verified: 2, closed: 3
|
15
|
+
end
|
16
|
+
<% end -%>
|
@@ -1,8 +1,8 @@
|
|
1
1
|
Someone with an account has requested their login be changed to this email address:
|
2
2
|
|
3
|
-
Old email: <%= @
|
3
|
+
Old email: <%= @account.email %>
|
4
4
|
|
5
|
-
New email: <%= @
|
5
|
+
New email: <%= @new_email %>
|
6
6
|
|
7
7
|
If you did not request this login change, please ignore this message. If you
|
8
8
|
requested this login change, please go to
|
@@ -1,5 +1,13 @@
|
|
1
|
+
<% if defined?(::ActiveRecord::Railtie) -%>
|
1
2
|
class <%= migration_class_name %> < ActiveRecord::Migration<%= migration_version %>
|
2
3
|
def change
|
3
4
|
<%= migration_content -%>
|
4
5
|
end
|
5
6
|
end
|
7
|
+
<% else -%>
|
8
|
+
Sequel.migration do
|
9
|
+
change do
|
10
|
+
<%= migration_content -%>
|
11
|
+
end
|
12
|
+
end
|
13
|
+
<% end -%>
|
@@ -9,6 +9,8 @@ module Rodauth
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def call(env)
|
12
|
+
return @app.call(env) if asset_request?(env)
|
13
|
+
|
12
14
|
app = Rodauth::Rails.app.new(@app)
|
13
15
|
|
14
16
|
# allow the Rails app to call Rodauth methods that throw :halt
|
@@ -16,6 +18,13 @@ module Rodauth
|
|
16
18
|
app.call(env)
|
17
19
|
end
|
18
20
|
end
|
21
|
+
|
22
|
+
# Check whether it's a request to an asset managed by Sprockets or Propshaft.
|
23
|
+
def asset_request?(env)
|
24
|
+
return false unless ::Rails.application.config.respond_to?(:assets)
|
25
|
+
|
26
|
+
env["PATH_INFO"] =~ %r(\A/{0,2}#{::Rails.application.config.assets.prefix})
|
27
|
+
end
|
19
28
|
end
|
20
29
|
end
|
21
30
|
end
|
data/lib/rodauth/rails/model.rb
CHANGED
@@ -1,101 +1,6 @@
|
|
1
1
|
module Rodauth
|
2
2
|
module Rails
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
def initialize(auth_class, association_options: {})
|
7
|
-
@auth_class = auth_class
|
8
|
-
@association_options = association_options
|
9
|
-
|
10
|
-
define_methods
|
11
|
-
end
|
12
|
-
|
13
|
-
def included(model)
|
14
|
-
fail Rodauth::Rails::Error, "must be an Active Record model" unless model < ActiveRecord::Base
|
15
|
-
|
16
|
-
define_associations(model)
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
def define_methods
|
22
|
-
rodauth = @auth_class.allocate.freeze
|
23
|
-
|
24
|
-
attr_reader :password
|
25
|
-
|
26
|
-
define_method(:password=) do |password|
|
27
|
-
@password = password
|
28
|
-
password_hash = rodauth.send(:password_hash, password) if password
|
29
|
-
set_password_hash(password_hash)
|
30
|
-
end
|
31
|
-
|
32
|
-
define_method(:set_password_hash) do |password_hash|
|
33
|
-
if rodauth.account_password_hash_column
|
34
|
-
public_send(:"#{rodauth.account_password_hash_column}=", password_hash)
|
35
|
-
else
|
36
|
-
if password_hash
|
37
|
-
record = self.password_hash || build_password_hash
|
38
|
-
record.public_send(:"#{rodauth.password_hash_column}=", password_hash)
|
39
|
-
else
|
40
|
-
self.password_hash&.mark_for_destruction
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
def define_associations(model)
|
47
|
-
define_password_hash_association(model) unless rodauth.account_password_hash_column
|
48
|
-
|
49
|
-
feature_associations.each do |association|
|
50
|
-
define_association(model, **association)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
def define_password_hash_association(model)
|
55
|
-
password_hash_id_column = rodauth.password_hash_id_column
|
56
|
-
scope = -> { select(password_hash_id_column) } if rodauth.send(:use_database_authentication_functions?)
|
57
|
-
|
58
|
-
define_association model,
|
59
|
-
type: :has_one,
|
60
|
-
name: :password_hash,
|
61
|
-
table: rodauth.password_hash_table,
|
62
|
-
foreign_key: password_hash_id_column,
|
63
|
-
scope: scope,
|
64
|
-
autosave: true
|
65
|
-
end
|
66
|
-
|
67
|
-
def define_association(model, type:, name:, table:, foreign_key:, scope: nil, **options)
|
68
|
-
associated_model = Class.new(model.superclass)
|
69
|
-
associated_model.table_name = table
|
70
|
-
associated_model.belongs_to :account,
|
71
|
-
class_name: model.name,
|
72
|
-
foreign_key: foreign_key,
|
73
|
-
inverse_of: name
|
74
|
-
|
75
|
-
model.const_set(name.to_s.singularize.camelize, associated_model)
|
76
|
-
|
77
|
-
model.public_send type, name, scope,
|
78
|
-
class_name: associated_model.name,
|
79
|
-
foreign_key: foreign_key,
|
80
|
-
dependent: type == :has_many ? :delete_all : :delete,
|
81
|
-
inverse_of: :account,
|
82
|
-
**options,
|
83
|
-
**association_options(name)
|
84
|
-
end
|
85
|
-
|
86
|
-
def feature_associations
|
87
|
-
Rodauth::Rails::Model::Associations.call(rodauth)
|
88
|
-
end
|
89
|
-
|
90
|
-
def association_options(name)
|
91
|
-
options = @association_options
|
92
|
-
options = options.call(name) if options.respond_to?(:call)
|
93
|
-
options || {}
|
94
|
-
end
|
95
|
-
|
96
|
-
def rodauth
|
97
|
-
@auth_class.allocate
|
98
|
-
end
|
99
|
-
end
|
3
|
+
Model = Rodauth::Model
|
4
|
+
deprecate_constant :Model
|
100
5
|
end
|
101
6
|
end
|
data/lib/rodauth/rails.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require "rodauth/rails/version"
|
2
2
|
require "rodauth/rails/railtie"
|
3
|
+
require "rodauth/model"
|
3
4
|
|
4
5
|
module Rodauth
|
5
6
|
module Rails
|
@@ -43,7 +44,7 @@ module Rodauth
|
|
43
44
|
end
|
44
45
|
|
45
46
|
def model(name = nil, **options)
|
46
|
-
Rodauth::
|
47
|
+
Rodauth::Model.new(app.rodauth!(name), **options)
|
47
48
|
end
|
48
49
|
|
49
50
|
# routing constraint that requires authentication
|
data/rodauth-rails.gemspec
CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.add_dependency "rodauth", "~> 2.23"
|
21
21
|
spec.add_dependency "roda", "~> 3.55"
|
22
22
|
spec.add_dependency "sequel-activerecord_connection", "~> 1.1"
|
23
|
+
spec.add_dependency "rodauth-model", "~> 0.2"
|
23
24
|
spec.add_dependency "tilt"
|
24
25
|
spec.add_dependency "bcrypt"
|
25
26
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rodauth-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Janko Marohnić
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-05-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -72,6 +72,20 @@ dependencies:
|
|
72
72
|
- - "~>"
|
73
73
|
- !ruby/object:Gem::Version
|
74
74
|
version: '1.1'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: rodauth-model
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0.2'
|
82
|
+
type: :runtime
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0.2'
|
75
89
|
- !ruby/object:Gem::Dependency
|
76
90
|
name: tilt
|
77
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -167,26 +181,43 @@ files:
|
|
167
181
|
- LICENSE.txt
|
168
182
|
- README.md
|
169
183
|
- lib/generators/rodauth/install_generator.rb
|
170
|
-
- lib/generators/rodauth/migration/account_expiration.erb
|
171
|
-
- lib/generators/rodauth/migration/active_sessions.erb
|
172
|
-
- lib/generators/rodauth/migration/audit_logging.erb
|
173
|
-
- lib/generators/rodauth/migration/base.erb
|
174
|
-
- lib/generators/rodauth/migration/disallow_password_reuse.erb
|
175
|
-
- lib/generators/rodauth/migration/email_auth.erb
|
176
|
-
- lib/generators/rodauth/migration/jwt_refresh.erb
|
177
|
-
- lib/generators/rodauth/migration/lockout.erb
|
178
|
-
- lib/generators/rodauth/migration/otp.erb
|
179
|
-
- lib/generators/rodauth/migration/password_expiration.erb
|
180
|
-
- lib/generators/rodauth/migration/recovery_codes.erb
|
181
|
-
- lib/generators/rodauth/migration/remember.erb
|
182
|
-
- lib/generators/rodauth/migration/reset_password.erb
|
183
|
-
- lib/generators/rodauth/migration/single_session.erb
|
184
|
-
- lib/generators/rodauth/migration/sms_codes.erb
|
185
|
-
- lib/generators/rodauth/migration/verify_account.erb
|
186
|
-
- lib/generators/rodauth/migration/verify_login_change.erb
|
187
|
-
- lib/generators/rodauth/migration/webauthn.erb
|
184
|
+
- lib/generators/rodauth/migration/active_record/account_expiration.erb
|
185
|
+
- lib/generators/rodauth/migration/active_record/active_sessions.erb
|
186
|
+
- lib/generators/rodauth/migration/active_record/audit_logging.erb
|
187
|
+
- lib/generators/rodauth/migration/active_record/base.erb
|
188
|
+
- lib/generators/rodauth/migration/active_record/disallow_password_reuse.erb
|
189
|
+
- lib/generators/rodauth/migration/active_record/email_auth.erb
|
190
|
+
- lib/generators/rodauth/migration/active_record/jwt_refresh.erb
|
191
|
+
- lib/generators/rodauth/migration/active_record/lockout.erb
|
192
|
+
- lib/generators/rodauth/migration/active_record/otp.erb
|
193
|
+
- lib/generators/rodauth/migration/active_record/password_expiration.erb
|
194
|
+
- lib/generators/rodauth/migration/active_record/recovery_codes.erb
|
195
|
+
- lib/generators/rodauth/migration/active_record/remember.erb
|
196
|
+
- lib/generators/rodauth/migration/active_record/reset_password.erb
|
197
|
+
- lib/generators/rodauth/migration/active_record/single_session.erb
|
198
|
+
- lib/generators/rodauth/migration/active_record/sms_codes.erb
|
199
|
+
- lib/generators/rodauth/migration/active_record/verify_account.erb
|
200
|
+
- lib/generators/rodauth/migration/active_record/verify_login_change.erb
|
201
|
+
- lib/generators/rodauth/migration/active_record/webauthn.erb
|
202
|
+
- lib/generators/rodauth/migration/sequel/account_expiration.erb
|
203
|
+
- lib/generators/rodauth/migration/sequel/active_sessions.erb
|
204
|
+
- lib/generators/rodauth/migration/sequel/audit_logging.erb
|
205
|
+
- lib/generators/rodauth/migration/sequel/base.erb
|
206
|
+
- lib/generators/rodauth/migration/sequel/disallow_password_reuse.erb
|
207
|
+
- lib/generators/rodauth/migration/sequel/email_auth.erb
|
208
|
+
- lib/generators/rodauth/migration/sequel/jwt_refresh.erb
|
209
|
+
- lib/generators/rodauth/migration/sequel/lockout.erb
|
210
|
+
- lib/generators/rodauth/migration/sequel/otp.erb
|
211
|
+
- lib/generators/rodauth/migration/sequel/password_expiration.erb
|
212
|
+
- lib/generators/rodauth/migration/sequel/recovery_codes.erb
|
213
|
+
- lib/generators/rodauth/migration/sequel/remember.erb
|
214
|
+
- lib/generators/rodauth/migration/sequel/reset_password.erb
|
215
|
+
- lib/generators/rodauth/migration/sequel/single_session.erb
|
216
|
+
- lib/generators/rodauth/migration/sequel/sms_codes.erb
|
217
|
+
- lib/generators/rodauth/migration/sequel/verify_account.erb
|
218
|
+
- lib/generators/rodauth/migration/sequel/verify_login_change.erb
|
219
|
+
- lib/generators/rodauth/migration/sequel/webauthn.erb
|
188
220
|
- lib/generators/rodauth/migration_generator.rb
|
189
|
-
- lib/generators/rodauth/migration_helpers.rb
|
190
221
|
- lib/generators/rodauth/templates/INSTRUCTIONS
|
191
222
|
- lib/generators/rodauth/templates/app/controllers/rodauth_controller.rb
|
192
223
|
- lib/generators/rodauth/templates/app/mailers/rodauth_mailer.rb
|
@@ -256,7 +287,6 @@ files:
|
|
256
287
|
- lib/rodauth/rails/feature/render.rb
|
257
288
|
- lib/rodauth/rails/middleware.rb
|
258
289
|
- lib/rodauth/rails/model.rb
|
259
|
-
- lib/rodauth/rails/model/associations.rb
|
260
290
|
- lib/rodauth/rails/railtie.rb
|
261
291
|
- lib/rodauth/rails/tasks.rake
|
262
292
|
- lib/rodauth/rails/test.rb
|
@@ -1,77 +0,0 @@
|
|
1
|
-
require "erb"
|
2
|
-
|
3
|
-
module Rodauth
|
4
|
-
module Rails
|
5
|
-
module Generators
|
6
|
-
module MigrationHelpers
|
7
|
-
attr_reader :migration_class_name
|
8
|
-
|
9
|
-
def migration_template(source, destination = File.basename(source))
|
10
|
-
@migration_class_name = destination.chomp(".rb").camelize
|
11
|
-
|
12
|
-
super source, File.join(db_migrate_path, destination)
|
13
|
-
end
|
14
|
-
|
15
|
-
private
|
16
|
-
|
17
|
-
def migration_content
|
18
|
-
migration_features
|
19
|
-
.select { |feature| File.exist?("#{__dir__}/migration/#{feature}.erb") }
|
20
|
-
.map { |feature| File.read("#{__dir__}/migration/#{feature}.erb") }
|
21
|
-
.map { |content| erb_eval(content) }
|
22
|
-
.join("\n")
|
23
|
-
.indent(4)
|
24
|
-
end
|
25
|
-
|
26
|
-
def activerecord_adapter
|
27
|
-
if ActiveRecord::Base.respond_to?(:connection_db_config)
|
28
|
-
ActiveRecord::Base.connection_db_config.adapter
|
29
|
-
else
|
30
|
-
ActiveRecord::Base.connection_config.fetch(:adapter)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def migration_version
|
35
|
-
return unless ActiveRecord.version >= Gem::Version.new("5.0")
|
36
|
-
|
37
|
-
"[#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}]"
|
38
|
-
end
|
39
|
-
|
40
|
-
def db_migrate_path
|
41
|
-
return "db/migrate" unless ActiveRecord.version >= Gem::Version.new("5.0")
|
42
|
-
|
43
|
-
super
|
44
|
-
end
|
45
|
-
|
46
|
-
def primary_key_type(key = :id)
|
47
|
-
generators = ::Rails.application.config.generators
|
48
|
-
column_type = generators.options[:active_record][:primary_key_type]
|
49
|
-
|
50
|
-
return unless column_type
|
51
|
-
|
52
|
-
if key
|
53
|
-
", #{key}: :#{column_type}"
|
54
|
-
else
|
55
|
-
column_type
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
def erb_eval(content)
|
60
|
-
if ERB.version[/\d+\.\d+\.\d+/].to_s >= "2.2.0"
|
61
|
-
ERB.new(content, trim_mode: "-").result(binding)
|
62
|
-
else
|
63
|
-
ERB.new(content, 0, "-").result(binding)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
def current_timestamp
|
68
|
-
if ActiveRecord.version >= Gem::Version.new("5.0")
|
69
|
-
%(-> { "CURRENT_TIMESTAMP" })
|
70
|
-
else
|
71
|
-
%(OpenStruct.new(quoted_id: "CURRENT_TIMESTAMP"))
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|