passwordless 1.4.0 → 1.6.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/app/controllers/passwordless/sessions_controller.rb +27 -11
- data/app/mailers/passwordless/mailer.rb +2 -1
- data/app/models/passwordless/session.rb +2 -1
- data/app/views/passwordless/sessions/show.html.erb +1 -1
- data/config/locales/en.yml +1 -0
- data/db/migrate/20171104221735_create_passwordless_sessions.rb +1 -1
- data/lib/passwordless/test_helpers.rb +4 -0
- data/lib/passwordless/version.rb +1 -1
- 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: 44758dfedcb5f0b737a6892abdb754751f14d4da6d0c4e7e3ae9fa41d1b544ee
|
4
|
+
data.tar.gz: 01e6534d9d3f8e11ff1f13e908c62a096fc32129a1f34df5a75defa97b7a0b31
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 29e04ae936111350bf9673b2fd38f88e47006b72bcdd4aac5a38595623ab93558ab03e0a62677197d21f56e5370f38cc9fa5b5cc44bd8d8bdecf43e5ee66932d
|
7
|
+
data.tar.gz: 0701f4569d5e37ca19d42eb1afe00bd4b99fb68a1e2951ff9ec419221d32fb559e012cbc80115013b94cb316b5b98c70f32e862ce448cc2985464a39f73d9e4a
|
@@ -30,19 +30,20 @@ module Passwordless
|
|
30
30
|
Passwordless.context.path_for(
|
31
31
|
@session,
|
32
32
|
id: @session.to_param,
|
33
|
-
action: "show"
|
33
|
+
action: "show",
|
34
|
+
**default_url_options
|
34
35
|
),
|
35
36
|
flash: {notice: I18n.t("passwordless.sessions.create.email_sent")}
|
36
37
|
)
|
37
38
|
else
|
38
|
-
flash
|
39
|
+
flash.alert = I18n.t("passwordless.sessions.create.error")
|
39
40
|
render(:new, status: :unprocessable_entity)
|
40
41
|
end
|
41
42
|
|
42
43
|
rescue ActiveRecord::RecordNotFound
|
43
44
|
@session = Session.new
|
44
45
|
|
45
|
-
flash
|
46
|
+
flash.alert = I18n.t("passwordless.sessions.create.not_found")
|
46
47
|
render(:new, status: :not_found)
|
47
48
|
end
|
48
49
|
|
@@ -119,8 +120,15 @@ module Passwordless
|
|
119
120
|
nil
|
120
121
|
end
|
121
122
|
|
122
|
-
def passwordless_success_redirect_path
|
123
|
-
success_redirect_path =
|
123
|
+
def passwordless_success_redirect_path(authenticatable)
|
124
|
+
success_redirect_path = Passwordless.config.success_redirect_path
|
125
|
+
|
126
|
+
if success_redirect_path.respond_to?(:call)
|
127
|
+
success_redirect_path = call_or_return(
|
128
|
+
success_redirect_path,
|
129
|
+
*[authenticatable].first(success_redirect_path.arity)
|
130
|
+
)
|
131
|
+
end
|
124
132
|
|
125
133
|
if Passwordless.config.redirect_back_after_sign_in
|
126
134
|
session_redirect_url = reset_passwordless_redirect_location!(authenticatable_class)
|
@@ -142,17 +150,21 @@ module Passwordless
|
|
142
150
|
def authenticate_and_sign_in(session, token)
|
143
151
|
if session.authenticate(token)
|
144
152
|
sign_in(session)
|
145
|
-
redirect_to(
|
153
|
+
redirect_to(
|
154
|
+
passwordless_success_redirect_path(session.authenticatable),
|
155
|
+
status: :see_other,
|
156
|
+
**redirect_to_options
|
157
|
+
)
|
146
158
|
else
|
147
|
-
flash
|
159
|
+
flash.alert = I18n.t("passwordless.sessions.errors.invalid_token")
|
148
160
|
render(status: :forbidden, action: "show")
|
149
161
|
end
|
150
162
|
|
151
163
|
rescue Errors::TokenAlreadyClaimedError
|
152
|
-
flash
|
164
|
+
flash.alert = I18n.t("passwordless.sessions.errors.token_claimed")
|
153
165
|
redirect_to(passwordless_failure_redirect_path, status: :see_other, **redirect_to_options)
|
154
166
|
rescue Errors::SessionTimedOutError
|
155
|
-
flash
|
167
|
+
flash.alert = I18n.t("passwordless.sessions.errors.session_expired")
|
156
168
|
redirect_to(passwordless_failure_redirect_path, status: :see_other, **redirect_to_options)
|
157
169
|
end
|
158
170
|
|
@@ -168,8 +180,12 @@ module Passwordless
|
|
168
180
|
authenticatable_type.constantize
|
169
181
|
end
|
170
182
|
|
171
|
-
def call_or_return(value)
|
172
|
-
value.respond_to?(:call)
|
183
|
+
def call_or_return(value, *args)
|
184
|
+
if value.respond_to?(:call)
|
185
|
+
instance_exec(*args, &value)
|
186
|
+
else
|
187
|
+
value
|
188
|
+
end
|
173
189
|
end
|
174
190
|
|
175
191
|
def find_authenticatable
|
@@ -10,7 +10,7 @@ module Passwordless
|
|
10
10
|
# @param session [Session] An instance of Passwordless::Session
|
11
11
|
# @param token [String] The token in plaintext. Falls back to `session.token` hoping it
|
12
12
|
# is still in memory (optional)
|
13
|
-
def sign_in(session, token = nil)
|
13
|
+
def sign_in(session, token = nil, url_options = {})
|
14
14
|
@token = token || session.token
|
15
15
|
|
16
16
|
@magic_link = Passwordless.context.url_for(
|
@@ -18,6 +18,7 @@ module Passwordless
|
|
18
18
|
action: "confirm",
|
19
19
|
id: session.to_param,
|
20
20
|
token: @token,
|
21
|
+
**url_options,
|
21
22
|
**default_url_options
|
22
23
|
)
|
23
24
|
|
data/config/locales/en.yml
CHANGED
@@ -75,6 +75,10 @@ if defined?(ActionDispatch::SystemTestCase)
|
|
75
75
|
ActionDispatch::SystemTestCase.send(:include, ::Passwordless::TestHelpers::SystemTestCase)
|
76
76
|
end
|
77
77
|
|
78
|
+
if defined?(ActionDispatch::IntegrationTest)
|
79
|
+
ActionDispatch::IntegrationTest.send(:include, ::Passwordless::TestHelpers::RequestTestCase)
|
80
|
+
end
|
81
|
+
|
78
82
|
if defined?(RSpec)
|
79
83
|
RSpec.configure do |config|
|
80
84
|
config.include(::Passwordless::TestHelpers::ControllerTestCase, type: :controller)
|
data/lib/passwordless/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: passwordless
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mikkel Malmberg
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-04-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -91,7 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
91
91
|
- !ruby/object:Gem::Version
|
92
92
|
version: '0'
|
93
93
|
requirements: []
|
94
|
-
rubygems_version: 3.5.
|
94
|
+
rubygems_version: 3.5.9
|
95
95
|
signing_key:
|
96
96
|
specification_version: 4
|
97
97
|
summary: Add authentication to your app without all the ickyness of passwords.
|