Skip to content

Commit cd6ec4f

Browse files
authored
Fix passwordless_sign_in bugs (#179)
1 parent a7891a8 commit cd6ec4f

File tree

7 files changed

+18
-4
lines changed

7 files changed

+18
-4
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Changelog
22

3+
## Unreleased
4+
5+
### Fixed
6+
7+
- Fixed a bug in `passwordless_sign_in` (#179)
8+
39
## 1.1.0
410

511
### Changed

app/mailers/passwordless/mailer.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def sign_in(session, token = nil)
1717
controller: "passwordless/sessions",
1818
action: "confirm",
1919
id: session.identifier,
20-
token: token,
20+
token: @token,
2121
authenticatable: "user",
2222
resource: "users"
2323
}

app/views/passwordless/sessions/new.html.erb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
<%= f.label email_field_name,
44
t("passwordless.sessions.new.email.label"),
55
for: "passwordless_#{email_field}" %>
6-
<%= text_field_tag email_field_name,
6+
<%= email_field_tag email_field_name,
77
params.fetch(email_field_name, nil),
88
required: true,
9+
autofocus: true,
910
placeholder: t("passwordless.sessions.new.email.placeholder") %>
1011
<%= f.submit t("passwordless.sessions.new.submit") %>
1112
<% end %>

docs/upgrading_to_1_0.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ class UpgradePasswordless < ActiveRecord::Migration[7.0]
2626
add_column(:passwordless_sessions, :token_digest, :string)
2727
add_index(:passwordless_sessions, :token_digest)
2828
remove_column(:passwordless_sessions, :token, :string, null: false)
29+
# UUID
30+
add_column(:passwordless_sessions, :identifier, :string)
31+
add_index(:passwordless_sessions, :identifier, unique: true)
2932

3033
# Remove PII
3134
remove_column(:passwordless_sessions, :user_agent, :string, null: false)

lib/passwordless/test_helpers.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def passwordless_sign_in(resource)
2222
{
2323
controller: "passwordless/sessions",
2424
action: "confirm",
25-
id: session.id,
25+
id: session.to_param,
2626
token: session.token,
2727
authenticatable: cls.model_name.singular,
2828
resource: cls.model_name.to_s.tableize

test/mailers/passwordless/mailer_test.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,9 @@ class Passwordless::MailerTest < ActionMailer::TestCase
1212
assert_match "Signing in ✨", email.subject
1313
assert_match /sign in: hello\n/, email.body.to_s
1414
assert_match %r{/sign_in/#{session.identifier}/hello}, email.body.to_s
15+
16+
session = Passwordless::Session.create!(authenticatable: user)
17+
email = Passwordless::Mailer.sign_in(session)
18+
assert_equal [user.email], email.to
1519
end
1620
end

test/passwordless/test_helpers_test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class PasswordlessTestHelpersTest < ActiveSupport::TestCase
4646
assert 1, Session.count
4747
assert alice, Session.last!.authenticatable
4848
assert_match(
49-
%r{^http://.*/users/sign_in/[a-z0-9]+/[a-z0-9]+}i,
49+
%r{^http://.*/users/sign_in/[a-z0-9-]+/[a-z0-9]+}i,
5050
controller.actions.first.last.first
5151
)
5252

0 commit comments

Comments
 (0)