devise-passwordless 1.0.1 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +39 -9
- data/app/controllers/devise/passwordless/sessions_controller.rb +6 -2
- data/app/mailers/devise/passwordless/mailer.rb +1 -0
- data/lib/devise/hooks/magic_link_authenticatable.rb +1 -1
- data/lib/devise/passwordless/version.rb +1 -1
- data/lib/devise/passwordless.rb +1 -0
- data/lib/generators/devise/passwordless/install_generator.rb +4 -3
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87feb45c34ca9664c8bd5658e6a4672be4fff2f42cefa63a0b461ac8c0d379bb
|
4
|
+
data.tar.gz: e1b082164084eb153a38e15d2bf89906bbf8aec0e3aa683a60a5e23d1ca811a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5662b42412c7eb3bcaabb5b38990b1fff94e5e97a45726e9e68542e775d806b4f0b84b0e55a55cfb129284991de878140f977f5f0a9816752dbae10ed28949f3
|
7
|
+
data.tar.gz: a2989bd93174338c3f21293a3606d3d0a9b36104db645260b037c216bdcf7482ef2593590a7a801a59b13e32895c8b1192125c35606f88ce7f33b1c035eaeb05
|
data/README.md
CHANGED
@@ -119,9 +119,10 @@ config.passwordless_tokenizer = "SignedGlobalIDTokenizer"
|
|
119
119
|
# generate your own secret value with e.g. `rake secret`
|
120
120
|
# config.passwordless_secret_key = nil
|
121
121
|
|
122
|
-
# When using the :trackable module, set to true to
|
123
|
-
# generated before the user's current sign in time to
|
124
|
-
# each time you sign in, all existing magic links
|
122
|
+
# When using the :trackable module and MessageEncryptorTokenizer, set to true to
|
123
|
+
# consider magic link tokens generated before the user's current sign in time to
|
124
|
+
# be expired. In other words, each time you sign in, all existing magic links
|
125
|
+
# will be considered invalid.
|
125
126
|
# config.passwordless_expire_old_tokens_on_sign_in = false
|
126
127
|
```
|
127
128
|
|
@@ -233,12 +234,12 @@ you can write something like this:
|
|
233
234
|
|
234
235
|
```ruby
|
235
236
|
class ApplicationController < ActionController::Base
|
236
|
-
def after_magic_link_sent_path_for(
|
237
|
-
case
|
238
|
-
when
|
239
|
-
|
240
|
-
when
|
241
|
-
|
237
|
+
def after_magic_link_sent_path_for(resource_or_scope)
|
238
|
+
case Devise::Mapping.find_scope!(resource_or_scope)
|
239
|
+
when :user
|
240
|
+
some_path
|
241
|
+
when :admin
|
242
|
+
some_other_path
|
242
243
|
end
|
243
244
|
end
|
244
245
|
end
|
@@ -589,9 +590,38 @@ Other Ruby libraries that offer passwordless authentication:
|
|
589
590
|
* [passwordless](https://github.com/mikker/passwordless)
|
590
591
|
* [magic-link](https://github.com/dvanderbeek/magic-link)
|
591
592
|
|
593
|
+
## Gem development
|
594
|
+
|
595
|
+
### Running tests
|
596
|
+
|
597
|
+
To run the set of basic gem tests, do:
|
598
|
+
|
599
|
+
```
|
600
|
+
$ bundle
|
601
|
+
$ bundle exec rake
|
602
|
+
```
|
603
|
+
|
604
|
+
The more important and more thorough tests utilize a "dummy" Rails application.
|
605
|
+
|
606
|
+
To run this full suite of dummy app tests across all supported versions of Ruby and Rails,
|
607
|
+
you can use [nektos/act][] to run the same tests that run in our GitHub Workflow CI:
|
608
|
+
|
609
|
+
```
|
610
|
+
$ act -W .github/workflows/test.yml -P ubuntu-latest=ghcr.io/catthehacker/ubuntu:act-latest --no-cache-server
|
611
|
+
```
|
612
|
+
|
613
|
+
To run only against specific versions of Ruby or Rails, you can use the `--matrix` flag of `act`:
|
614
|
+
|
615
|
+
```
|
616
|
+
$ act -W .github/workflows/test.yml -P ubuntu-latest=ghcr.io/catthehacker/ubuntu:act-latest --no-cache-server --matrix ruby-version:3.2 --matrix rails-version:7 --matrix rails-version:6.1
|
617
|
+
```
|
618
|
+
|
619
|
+
The above example will only run the tests for Rails 7 and Rails 6.1 using Ruby 3.2.
|
620
|
+
|
592
621
|
## License
|
593
622
|
|
594
623
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
595
624
|
|
596
625
|
[Devise]: https://github.com/heartcombo/devise
|
597
626
|
[devise-i18n]: https://github.com/heartcombo/devise#i18n
|
627
|
+
[nektos/act]: https://github.com/nektos/act
|
@@ -1,7 +1,7 @@
|
|
1
1
|
class Devise::Passwordless::SessionsController < Devise::SessionsController
|
2
2
|
def create
|
3
|
-
if (self.resource = resource_class.
|
4
|
-
|
3
|
+
if (self.resource = resource_class.find_for_authentication(email: create_params[:email]))
|
4
|
+
send_magic_link(resource)
|
5
5
|
if Devise.paranoid
|
6
6
|
set_flash_message!(:notice, :magic_link_sent_paranoid)
|
7
7
|
else
|
@@ -23,6 +23,10 @@ class Devise::Passwordless::SessionsController < Devise::SessionsController
|
|
23
23
|
|
24
24
|
protected
|
25
25
|
|
26
|
+
def send_magic_link(resource)
|
27
|
+
resource.send_magic_link(remember_me: create_params[:remember_me])
|
28
|
+
end
|
29
|
+
|
26
30
|
def translation_scope
|
27
31
|
if action_name == "create"
|
28
32
|
"devise.passwordless"
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# Deny user access when magic link authentication is disabled
|
4
4
|
Warden::Manager.after_set_user do |record, warden, options|
|
5
|
-
if record && record.respond_to?(:active_for_magic_link_authentication?) && !record.active_for_magic_link_authentication?
|
5
|
+
if record && record.respond_to?(:active_for_magic_link_authentication?) && !record.active_for_magic_link_authentication? && warden.winning_strategy.is_a?(Devise::Strategies::MagicLinkAuthenticatable)
|
6
6
|
scope = options[:scope]
|
7
7
|
warden.logout(scope)
|
8
8
|
throw :warden, scope: scope, message: record.magic_link_inactive_message
|
data/lib/devise/passwordless.rb
CHANGED
@@ -33,9 +33,10 @@ module Devise::Passwordless
|
|
33
33
|
# generate your own secret value with e.g. `rake secret`
|
34
34
|
# config.passwordless_secret_key = nil
|
35
35
|
|
36
|
-
# When using the :trackable module, set to true to
|
37
|
-
# generated before the user's current sign in time to
|
38
|
-
# each time you sign in, all existing magic links
|
36
|
+
# When using the :trackable module and MessageEncryptorTokenizer, set to true to
|
37
|
+
# consider magic link tokens generated before the user's current sign in time to
|
38
|
+
# be expired. In other words, each time you sign in, all existing magic links
|
39
|
+
# will be considered invalid.
|
39
40
|
# config.passwordless_expire_old_tokens_on_sign_in = false
|
40
41
|
CONFIG
|
41
42
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devise-passwordless
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Abe Voelker
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-05-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: devise
|
@@ -101,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
101
101
|
- !ruby/object:Gem::Version
|
102
102
|
version: '0'
|
103
103
|
requirements: []
|
104
|
-
rubygems_version: 3.4.
|
104
|
+
rubygems_version: 3.4.19
|
105
105
|
signing_key:
|
106
106
|
specification_version: 4
|
107
107
|
summary: Passwordless (email-only) login strategy for Devise
|