rodauth-rails 0.8.2 → 0.9.0
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 +12 -0
- data/README.md +104 -27
- data/lib/generators/rodauth/install_generator.rb +9 -15
- data/lib/generators/rodauth/templates/app/lib/rodauth_app.rb +23 -24
- data/lib/rodauth/rails.rb +10 -0
- data/lib/rodauth/rails/app.rb +6 -12
- data/lib/rodauth/rails/app/flash.rb +5 -3
- data/lib/rodauth/rails/feature.rb +8 -0
- data/lib/rodauth/rails/version.rb +1 -1
- data/rodauth-rails.gemspec +1 -1
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60fda35b195285a7c9cc14e07153d80faa9e939cf2944fbb04e1360baf30e306
|
4
|
+
data.tar.gz: 1f89bcfff28e6d08287fa67a9fe9228a2d61f15a8a9cdecb9fcf138137d72c47
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8e4ed3afbe7a114ba36f19541d1c8c8ee62de07526400230b1386f027b05876cd78ad88bdb40cae9767e74f83d1532d4939d97d03657662933f81d7086df34d9
|
7
|
+
data.tar.gz: cae1fc15a86f1b2e2423a8e54f36b844f610ba23ff74fd9ced132200e9816260028682c0efea1dcf19cf8a722a7ae49882c8d31c670e268e229117b4f6fb84f2
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
## 0.9.0 (2021-02-07)
|
2
|
+
|
3
|
+
* Load Roda's JSON support by default, so that enabling `json`/`jwt` feature is all that's needed (@janko)
|
4
|
+
|
5
|
+
* Bump Rodauth dependency to 2.9+ (@janko)
|
6
|
+
|
7
|
+
* Add `--json` option for `rodauth:install` generator for configuring `json` feature (@janko)
|
8
|
+
|
9
|
+
* Add `--jwt` option for `rodauth:install` generator for configuring `jwt` feature (@janko)
|
10
|
+
|
11
|
+
* Remove the `--api` option from `rodauth:install` generator (@janko)
|
12
|
+
|
1
13
|
## 0.8.2 (2021-01-10)
|
2
14
|
|
3
15
|
* Reset Rails session on `#clear_session`, protecting from potential session fixation attacks (@janko)
|
data/README.md
CHANGED
@@ -2,6 +2,35 @@
|
|
2
2
|
|
3
3
|
Provides Rails integration for the [Rodauth] authentication framework.
|
4
4
|
|
5
|
+
## Table of contents
|
6
|
+
|
7
|
+
* [Resources](#resources)
|
8
|
+
* [Why Rodauth?](#why-rodauth)
|
9
|
+
* [Upgrading](#upgrading)
|
10
|
+
* [Installation](#installation)
|
11
|
+
* [Usage](#usage)
|
12
|
+
- [Routes](#routes)
|
13
|
+
- [Current account](#current-account)
|
14
|
+
- [Requiring authentication](#requiring-authentication)
|
15
|
+
- [Views](#views)
|
16
|
+
- [Mailer](#mailer)
|
17
|
+
- [Migrations](#migrations)
|
18
|
+
- [Multiple configurations](#multiple-configurations)
|
19
|
+
- [Calling controller methods](#calling-controller-methods)
|
20
|
+
- [Rodauth instance](#rodauth-instance)
|
21
|
+
* [How it works](#how-it-works)
|
22
|
+
- [Middleware](#middleware)
|
23
|
+
- [App](#app)
|
24
|
+
- [Sequel](#sequel)
|
25
|
+
* [JSON API](#json-api)
|
26
|
+
* [OmniAuth](#omniauth)
|
27
|
+
* [Configuring](#configuring)
|
28
|
+
* [Custom extensions](#custom-extensions)
|
29
|
+
* [Testing](#testing)
|
30
|
+
* [Rodauth defaults](#rodauth-defaults)
|
31
|
+
- [Database functions](#database-functions)
|
32
|
+
- [Account statuses](#account-statuses)
|
33
|
+
|
5
34
|
## Resources
|
6
35
|
|
7
36
|
Useful links:
|
@@ -18,11 +47,11 @@ Articles:
|
|
18
47
|
## Why Rodauth?
|
19
48
|
|
20
49
|
There are already several popular authentication solutions for Rails (Devise,
|
21
|
-
Sorcery, Clearance, Authlogic), so why would you choose Rodauth?
|
22
|
-
|
50
|
+
Sorcery, Clearance, Authlogic), so why would you choose Rodauth? Here are some
|
51
|
+
of the advantages that stand out for me:
|
23
52
|
|
24
53
|
* multifactor authentication ([TOTP][otp], [SMS codes][sms_codes], [recovery codes][recovery_codes], [WebAuthn][webauthn])
|
25
|
-
* standardized [JSON API support][
|
54
|
+
* standardized [JSON API support][json] for every feature (including [JWT][jwt])
|
26
55
|
* enterprise security features ([password complexity][password_complexity], [disallow password reuse][disallow_password_reuse], [password expiration][password_expiration], [session expiration][session_expiration], [single session][single_session], [account expiration][account_expiration])
|
27
56
|
* [email authentication][email_auth] (aka "passwordless")
|
28
57
|
* [audit logging][audit_logging] (for any action)
|
@@ -54,7 +83,7 @@ documentation][hmac] for instructions on how to safely transition, or just set
|
|
54
83
|
Add the gem to your Gemfile:
|
55
84
|
|
56
85
|
```rb
|
57
|
-
gem "rodauth-rails", "~> 0.
|
86
|
+
gem "rodauth-rails", "~> 0.9"
|
58
87
|
|
59
88
|
# gem "jwt", require: false # for JWT feature
|
60
89
|
# gem "rotp", require: false # for OTP feature
|
@@ -73,7 +102,9 @@ $ rails generate rodauth:install
|
|
73
102
|
Or if you want Rodauth endpoints to be exposed via JSON API:
|
74
103
|
|
75
104
|
```sh
|
76
|
-
$ rails generate rodauth:install --
|
105
|
+
$ rails generate rodauth:install --json # regular authentication using the Rails session
|
106
|
+
# or
|
107
|
+
$ rails generate rodauth:install --jwt # token authentication via the "Authorization" header
|
77
108
|
$ bundle add jwt
|
78
109
|
```
|
79
110
|
|
@@ -481,6 +512,42 @@ class CreateRodauthOtpSmsCodesRecoveryCodes < ActiveRecord::Migration
|
|
481
512
|
end
|
482
513
|
```
|
483
514
|
|
515
|
+
### Multiple configurations
|
516
|
+
|
517
|
+
If you need to handle multiple types of accounts that require different
|
518
|
+
authentication logic, you can create different configurations for them:
|
519
|
+
|
520
|
+
```rb
|
521
|
+
# app/lib/rodauth_app.rb
|
522
|
+
class RodauthApp < Rodauth::Rails::App
|
523
|
+
# primary configuration
|
524
|
+
configure do
|
525
|
+
# ...
|
526
|
+
end
|
527
|
+
|
528
|
+
# alternative configuration
|
529
|
+
configure(:admin) do
|
530
|
+
# ... enable features ...
|
531
|
+
prefix "/admin"
|
532
|
+
session_key_prefix "admin_"
|
533
|
+
remember_cookie_key "_admin_remember" # if using remember feature
|
534
|
+
# ...
|
535
|
+
end
|
536
|
+
|
537
|
+
route do |r|
|
538
|
+
r.rodauth
|
539
|
+
r.on("admin") { r.rodauth(:admin) }
|
540
|
+
# ...
|
541
|
+
end
|
542
|
+
end
|
543
|
+
```
|
544
|
+
|
545
|
+
Then in your application you can reference the secondary Rodauth instance:
|
546
|
+
|
547
|
+
```rb
|
548
|
+
rodauth(:admin).login_path #=> "/admin/login"
|
549
|
+
```
|
550
|
+
|
484
551
|
### Calling controller methods
|
485
552
|
|
486
553
|
When using Rodauth before/after hooks or generally overriding your Rodauth
|
@@ -514,7 +581,7 @@ Rodauth operations outside of the request context. rodauth-rails gives you the
|
|
514
581
|
ability to retrieve the Rodauth instance:
|
515
582
|
|
516
583
|
```rb
|
517
|
-
rodauth = Rodauth::Rails.rodauth # or Rodauth::Rails.rodauth(:
|
584
|
+
rodauth = Rodauth::Rails.rodauth # or Rodauth::Rails.rodauth(:admin)
|
518
585
|
|
519
586
|
rodauth.login_url #=> "https://example.com/login"
|
520
587
|
rodauth.account_from_login("user@example.com") # loads user by email
|
@@ -545,8 +612,8 @@ The Rodauth app stores the `Rodauth::Auth` instance in the Rack env hash, which
|
|
545
612
|
is then available in your Rails app:
|
546
613
|
|
547
614
|
```rb
|
548
|
-
request.env["rodauth"]
|
549
|
-
request.env["rodauth.
|
615
|
+
request.env["rodauth"] #=> #<Rodauth::Auth>
|
616
|
+
request.env["rodauth.admin"] #=> #<Rodauth::Auth> (if using multiple configurations)
|
550
617
|
```
|
551
618
|
|
552
619
|
For convenience, this object can be accessed via the `#rodauth` method in views
|
@@ -555,14 +622,14 @@ and controllers:
|
|
555
622
|
```rb
|
556
623
|
class MyController < ApplicationController
|
557
624
|
def my_action
|
558
|
-
rodauth
|
559
|
-
rodauth(:
|
625
|
+
rodauth #=> #<Rodauth::Auth>
|
626
|
+
rodauth(:admin) #=> #<Rodauth::Auth> (if using multiple configurations)
|
560
627
|
end
|
561
628
|
end
|
562
629
|
```
|
563
630
|
```erb
|
564
|
-
<% rodauth
|
565
|
-
<% rodauth(:
|
631
|
+
<% rodauth #=> #<Rodauth::Auth> %>
|
632
|
+
<% rodauth(:admin) #=> #<Rodauth::Auth> (if using multiple configurations) %>
|
566
633
|
```
|
567
634
|
|
568
635
|
### App
|
@@ -584,7 +651,7 @@ any additional [plugin options].
|
|
584
651
|
class RodauthApp < Rodauth::Rails::App
|
585
652
|
configure { ... } # defining default Rodauth configuration
|
586
653
|
configure(json: true) { ... } # passing options to the Rodauth plugin
|
587
|
-
configure(:
|
654
|
+
configure(:admin) { ... } # defining multiple Rodauth configurations
|
588
655
|
end
|
589
656
|
```
|
590
657
|
|
@@ -619,15 +686,32 @@ function calls).
|
|
619
686
|
|
620
687
|
If ActiveRecord is used in the application, the `rodauth:install` generator
|
621
688
|
will have automatically configured Sequel to reuse ActiveRecord's database
|
622
|
-
connection
|
689
|
+
connection, using the [sequel-activerecord_connection] gem.
|
623
690
|
|
624
691
|
This means that, from the usage perspective, Sequel can be considered just
|
625
692
|
as an implementation detail of Rodauth.
|
626
693
|
|
627
694
|
## JSON API
|
628
695
|
|
629
|
-
|
630
|
-
|
696
|
+
To make Rodauth endpoints accessible via JSON API, enable the [`json`][json]
|
697
|
+
feature:
|
698
|
+
|
699
|
+
```rb
|
700
|
+
# app/lib/rodauth_app.rb
|
701
|
+
class RodauthApp < Rodauth::Rails::App
|
702
|
+
configure do
|
703
|
+
# ...
|
704
|
+
enable :json
|
705
|
+
only_json? true # accept only JSON requests
|
706
|
+
# ...
|
707
|
+
end
|
708
|
+
end
|
709
|
+
```
|
710
|
+
|
711
|
+
This will store account session data into the Rails session. If you rather want
|
712
|
+
stateless token-based authentication via the `Authorization` header, enable the
|
713
|
+
[`jwt`][jwt] feature (which builds on top of the `json` feature) and add the
|
714
|
+
[JWT gem] to the Gemfile:
|
631
715
|
|
632
716
|
```sh
|
633
717
|
$ bundle add jwt
|
@@ -635,24 +719,16 @@ $ bundle add jwt
|
|
635
719
|
```rb
|
636
720
|
# app/lib/rodauth_app.rb
|
637
721
|
class RodauthApp < Rodauth::Rails::App
|
638
|
-
configure
|
722
|
+
configure do
|
639
723
|
# ...
|
640
724
|
enable :jwt
|
641
|
-
|
642
|
-
|
725
|
+
jwt_secret "<YOUR_SECRET_KEY>" # store the JWT secret in a safe place
|
726
|
+
only_json? true # accept only JSON requests
|
643
727
|
# ...
|
644
728
|
end
|
645
729
|
end
|
646
730
|
```
|
647
731
|
|
648
|
-
With the above configuration, Rodauth routes will only be accessible via JSON
|
649
|
-
requests. If you still want to allow HTML access alongside JSON, change `json:
|
650
|
-
:only` to `json: true`.
|
651
|
-
|
652
|
-
Emails will automatically work in JSON-only mode, because `Rodauth::Rails::App`
|
653
|
-
comes with Roda's `render` plugin loaded. They are customized the same as in
|
654
|
-
the non-JSON case.
|
655
|
-
|
656
732
|
## OmniAuth
|
657
733
|
|
658
734
|
While Rodauth doesn't yet come with [OmniAuth] integration, we can build one
|
@@ -976,6 +1052,7 @@ conduct](https://github.com/janko/rodauth-rails/blob/master/CODE_OF_CONDUCT.md).
|
|
976
1052
|
[sms_codes]: http://rodauth.jeremyevans.net/rdoc/files/doc/sms_codes_rdoc.html
|
977
1053
|
[recovery_codes]: http://rodauth.jeremyevans.net/rdoc/files/doc/recovery_codes_rdoc.html
|
978
1054
|
[webauthn]: http://rodauth.jeremyevans.net/rdoc/files/doc/webauthn_rdoc.html
|
1055
|
+
[json]: http://rodauth.jeremyevans.net/rdoc/files/doc/json_rdoc.html
|
979
1056
|
[jwt]: http://rodauth.jeremyevans.net/rdoc/files/doc/jwt_rdoc.html
|
980
1057
|
[email_auth]: http://rodauth.jeremyevans.net/rdoc/files/doc/email_auth_rdoc.html
|
981
1058
|
[audit_logging]: http://rodauth.jeremyevans.net/rdoc/files/doc/audit_logging_rdoc.html
|
@@ -13,14 +13,8 @@ module Rodauth
|
|
13
13
|
source_root "#{__dir__}/templates"
|
14
14
|
namespace "rodauth:install"
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
# value instead.
|
19
|
-
def self.default_value_for_option(name, options)
|
20
|
-
name == :api ? options[:default] : super
|
21
|
-
end
|
22
|
-
|
23
|
-
class_option :api, type: :boolean, desc: "Generate JSON-only configuration"
|
16
|
+
class_option :json, type: :boolean, desc: "Configure JSON support"
|
17
|
+
class_option :jwt, type: :boolean, desc: "Configure JWT support"
|
24
18
|
|
25
19
|
def create_rodauth_migration
|
26
20
|
return unless defined?(ActiveRecord::Base)
|
@@ -83,17 +77,17 @@ module Rodauth
|
|
83
77
|
end
|
84
78
|
end
|
85
79
|
|
86
|
-
def
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
80
|
+
def json?
|
81
|
+
options[:json]
|
82
|
+
end
|
83
|
+
|
84
|
+
def jwt?
|
85
|
+
options[:jwt] || Rodauth::Rails.api_only?
|
92
86
|
end
|
93
87
|
|
94
88
|
def migration_features
|
95
89
|
features = [:base, :reset_password, :verify_account, :verify_login_change]
|
96
|
-
features << :remember unless
|
90
|
+
features << :remember unless jwt?
|
97
91
|
features
|
98
92
|
end
|
99
93
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
class RodauthApp < Rodauth::Rails::App
|
2
|
-
configure
|
2
|
+
configure do
|
3
3
|
# List of authentication features that are loaded.
|
4
4
|
enable :create_account, :verify_account, :verify_account_grace_period,
|
5
|
-
:login, :logout
|
5
|
+
:login, :logout<%= ", :remember" unless jwt? %>,
|
6
6
|
:reset_password, :change_password, :change_password_notify,
|
7
7
|
:change_login, :verify_login_change,
|
8
|
-
:close_account
|
8
|
+
:close_account<%= ", :json" if json? %><%= ", :jwt" if jwt? %>
|
9
9
|
|
10
10
|
# See the Rodauth documentation for the list of available config options:
|
11
11
|
# http://rodauth.jeremyevans.net/documentation.html
|
@@ -14,6 +14,16 @@ class RodauthApp < Rodauth::Rails::App
|
|
14
14
|
# The secret key used for hashing public-facing tokens for various features.
|
15
15
|
# Defaults to Rails `secret_key_base`, but you can use your own secret key.
|
16
16
|
# hmac_secret "<%= SecureRandom.hex(64) %>"
|
17
|
+
<% if jwt? -%>
|
18
|
+
|
19
|
+
# Set JWT secret, which is used to cryptographically protect the token.
|
20
|
+
jwt_secret "<%= SecureRandom.hex(64) %>"
|
21
|
+
<% end -%>
|
22
|
+
<% if json? || jwt? -%>
|
23
|
+
|
24
|
+
# Accept only JSON requests.
|
25
|
+
only_json? true
|
26
|
+
<% end -%>
|
17
27
|
|
18
28
|
# Specify the controller used for view rendering and CSRF verification.
|
19
29
|
rails_controller { RodauthController }
|
@@ -42,18 +52,6 @@ class RodauthApp < Rodauth::Rails::App
|
|
42
52
|
|
43
53
|
# Redirect to the app from login and registration pages if already logged in.
|
44
54
|
# already_logged_in { redirect login_redirect }
|
45
|
-
<% if api_only? -%>
|
46
|
-
|
47
|
-
# ==> JWT
|
48
|
-
# Set JWT secret, which is used to cryptographically protect the token.
|
49
|
-
jwt_secret "<%= SecureRandom.hex(64) %>"
|
50
|
-
|
51
|
-
# Don't require login confirmation param.
|
52
|
-
require_login_confirmation? false
|
53
|
-
|
54
|
-
# Don't require password confirmation param.
|
55
|
-
require_password_confirmation? false
|
56
|
-
<% end -%>
|
57
55
|
|
58
56
|
# ==> Emails
|
59
57
|
# Uncomment the lines below once you've imported mailer views.
|
@@ -80,14 +78,14 @@ class RodauthApp < Rodauth::Rails::App
|
|
80
78
|
# db.after_commit { email.deliver_later }
|
81
79
|
# end
|
82
80
|
|
83
|
-
# In the meantime you can tweak settings for emails created by Rodauth
|
81
|
+
# In the meantime, you can tweak settings for emails created by Rodauth.
|
84
82
|
# email_subject_prefix "[MyApp] "
|
85
83
|
# email_from "noreply@myapp.com"
|
86
84
|
# send_email(&:deliver_later)
|
87
85
|
# reset_password_email_body { "Click here to reset your password: #{reset_password_email_link}" }
|
88
86
|
|
89
87
|
# ==> Flash
|
90
|
-
<% unless
|
88
|
+
<% unless json? || jwt? -%>
|
91
89
|
# Match flash keys with ones already used in the Rails app.
|
92
90
|
# flash_notice_key :success # default is :notice
|
93
91
|
# flash_error_key :error # default is :alert
|
@@ -107,7 +105,7 @@ class RodauthApp < Rodauth::Rails::App
|
|
107
105
|
|
108
106
|
# Change minimum number of password characters required when creating an account.
|
109
107
|
# password_minimum_length 8
|
110
|
-
<% unless
|
108
|
+
<% unless jwt? -%>
|
111
109
|
|
112
110
|
# ==> Remember Feature
|
113
111
|
# Remember all logged in users.
|
@@ -128,13 +126,14 @@ class RodauthApp < Rodauth::Rails::App
|
|
128
126
|
|
129
127
|
# Perform additional actions after the account is created.
|
130
128
|
# after_create_account do
|
131
|
-
# Profile.create!(account_id:
|
129
|
+
# Profile.create!(account_id: account_id, name: param("name"))
|
132
130
|
# end
|
133
131
|
|
134
132
|
# Do additional cleanup after the account is closed.
|
135
133
|
# after_close_account do
|
136
|
-
# Profile.find_by!(account_id:
|
134
|
+
# Profile.find_by!(account_id: account_id).destroy
|
137
135
|
# end
|
136
|
+
<% unless json? || jwt? -%>
|
138
137
|
|
139
138
|
# ==> Redirects
|
140
139
|
# Redirect to home page after logout.
|
@@ -145,6 +144,7 @@ class RodauthApp < Rodauth::Rails::App
|
|
145
144
|
|
146
145
|
# Redirect to login page after password reset.
|
147
146
|
reset_password_redirect { login_path }
|
147
|
+
<% end -%>
|
148
148
|
|
149
149
|
# ==> Deadlines
|
150
150
|
# Change default deadlines for some actions.
|
@@ -156,14 +156,13 @@ class RodauthApp < Rodauth::Rails::App
|
|
156
156
|
|
157
157
|
# ==> Multiple configurations
|
158
158
|
# configure(:admin) do
|
159
|
-
# enable :http_basic_auth
|
160
|
-
#
|
159
|
+
# enable :http_basic_auth # enable different set of features
|
161
160
|
# prefix "/admin"
|
162
|
-
#
|
161
|
+
# session_key_prefix "admin_"
|
163
162
|
# end
|
164
163
|
|
165
164
|
route do |r|
|
166
|
-
<% unless
|
165
|
+
<% unless jwt? -%>
|
167
166
|
rodauth.load_memory # autologin remembered users
|
168
167
|
|
169
168
|
<% end -%>
|
data/lib/rodauth/rails.rb
CHANGED
data/lib/rodauth/rails/app.rb
CHANGED
@@ -12,22 +12,16 @@ module Rodauth
|
|
12
12
|
plugin :hooks
|
13
13
|
plugin :render, layout: false
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
end
|
15
|
+
if defined?(ActionDispatch::Flash) # not in API-only mode
|
16
|
+
require "rodauth/rails/app/flash"
|
17
|
+
plugin Flash
|
18
|
+
end
|
20
19
|
|
21
|
-
|
20
|
+
def self.configure(name = nil, **options, &block)
|
21
|
+
plugin :rodauth, name: name, csrf: false, flash: false, json: true, **options do
|
22
22
|
# load the Rails integration
|
23
23
|
enable :rails
|
24
24
|
|
25
|
-
if options[:json] == :only && ActionPack.version >= Gem::Version.new("5.0")
|
26
|
-
rails_controller { ActionController::API }
|
27
|
-
else
|
28
|
-
rails_controller { ActionController::Base }
|
29
|
-
end
|
30
|
-
|
31
25
|
# database functions are more complex to set up, so disable them by default
|
32
26
|
use_database_authentication_functions? false
|
33
27
|
|
@@ -30,10 +30,12 @@ module Rodauth
|
|
30
30
|
rails_request.flash
|
31
31
|
end
|
32
32
|
|
33
|
-
|
34
|
-
|
33
|
+
if ActionPack.version >= Gem::Version.new("5.0")
|
34
|
+
def commit_flash
|
35
35
|
rails_request.commit_flash
|
36
|
-
|
36
|
+
end
|
37
|
+
else
|
38
|
+
def commit_flash
|
37
39
|
# ActionPack 4.2 automatically commits flash
|
38
40
|
end
|
39
41
|
end
|
@@ -192,6 +192,14 @@ module Rodauth
|
|
192
192
|
defined?(ActionController::API) && rails_controller <= ActionController::API
|
193
193
|
end
|
194
194
|
|
195
|
+
def rails_controller
|
196
|
+
if only_json? && Rodauth::Rails.api_only?
|
197
|
+
ActionController::API
|
198
|
+
else
|
199
|
+
ActionController::Base
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
195
203
|
# ActionMailer subclass for correct email delivering.
|
196
204
|
class Mailer < ActionMailer::Base
|
197
205
|
def create_email(**options)
|
data/rodauth-rails.gemspec
CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.require_paths = ["lib"]
|
18
18
|
|
19
19
|
spec.add_dependency "railties", ">= 4.2", "< 7"
|
20
|
-
spec.add_dependency "rodauth", "~> 2.
|
20
|
+
spec.add_dependency "rodauth", "~> 2.9"
|
21
21
|
spec.add_dependency "sequel-activerecord_connection", "~> 1.1"
|
22
22
|
spec.add_dependency "tilt"
|
23
23
|
spec.add_dependency "bcrypt"
|
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: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Janko Marohnić
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-02-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -36,14 +36,14 @@ dependencies:
|
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '2.
|
39
|
+
version: '2.9'
|
40
40
|
type: :runtime
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
44
|
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '2.
|
46
|
+
version: '2.9'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: sequel-activerecord_connection
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -216,7 +216,7 @@ homepage: https://github.com/janko/rodauth-rails
|
|
216
216
|
licenses:
|
217
217
|
- MIT
|
218
218
|
metadata: {}
|
219
|
-
post_install_message:
|
219
|
+
post_install_message:
|
220
220
|
rdoc_options: []
|
221
221
|
require_paths:
|
222
222
|
- lib
|
@@ -231,8 +231,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
231
231
|
- !ruby/object:Gem::Version
|
232
232
|
version: '0'
|
233
233
|
requirements: []
|
234
|
-
rubygems_version: 3.
|
235
|
-
signing_key:
|
234
|
+
rubygems_version: 3.2.3
|
235
|
+
signing_key:
|
236
236
|
specification_version: 4
|
237
237
|
summary: Provides Rails integration for Rodauth.
|
238
238
|
test_files: []
|