From a8f328c921a3935108ce5a5c48b1418cf4bf3a26 Mon Sep 17 00:00:00 2001 From: "Stanko K.R." Date: Thu, 4 Dec 2025 11:30:21 +0100 Subject: [PATCH] Sign up new users on sign in --- app/controllers/sessions_controller.rb | 11 ++++++++--- test/controllers/sessions_controller_test.rb | 9 ++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index 31ca0006f..5335f58f3 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -9,11 +9,16 @@ class SessionsController < ApplicationController end def create - if identity = Identity.find_by_email_address(email_address) - magic_link = identity.send_magic_link - serve_development_magic_link(magic_link) + identity = Identity.find_by_email_address(email_address) + + magic_link = if identity + identity.send_magic_link + else + Signup.new(email_address: email_address).create_identity end + serve_development_magic_link(magic_link) + redirect_to session_magic_link_path end diff --git a/test/controllers/sessions_controller_test.rb b/test/controllers/sessions_controller_test.rb index 9dbcc770d..f2318bf46 100644 --- a/test/controllers/sessions_controller_test.rb +++ b/test/controllers/sessions_controller_test.rb @@ -24,12 +24,15 @@ class SessionsControllerTest < ActionDispatch::IntegrationTest test "create for a new user" do untenanted do - assert_no_difference -> { MagicLink.count } do - post session_path, - params: { email_address: "nonexistent-#{SecureRandom.hex(6)}@example.com" } + assert_difference -> { MagicLink.count }, +1 do + assert_difference -> { Identity.count }, +1 do + post session_path, + params: { email_address: "nonexistent-#{SecureRandom.hex(6)}@example.com" } + end end assert_redirected_to session_magic_link_path + assert MagicLink.last.for_sign_up? end end