fix: distinguish magic-link login from confirmation
This commit is contained in:
parent
7ce052d0a1
commit
0717054851
|
|
@ -24,16 +24,21 @@ defmodule WhoNeedHelpWeb.UserSessionController do
|
||||||
end
|
end
|
||||||
|
|
||||||
# magic link login
|
# magic link login
|
||||||
def create(conn, %{"user" => %{"token" => token} = user_params} = params)
|
def create(conn, %{"user" => %{"token" => token} = user_params})
|
||||||
when is_binary(token) do
|
when is_binary(token) do
|
||||||
info =
|
was_confirmed? =
|
||||||
case params do
|
case Accounts.get_user_by_magic_link_token(token) do
|
||||||
%{"_action" => "confirmed"} -> gettext("User confirmed successfully.")
|
%Accounts.User{confirmed_at: confirmed_at} -> not is_nil(confirmed_at)
|
||||||
_ -> gettext("Welcome back!")
|
_missing_or_invalid -> false
|
||||||
end
|
end
|
||||||
|
|
||||||
case Accounts.login_user_by_magic_link(token) do
|
case Accounts.login_user_by_magic_link(token) do
|
||||||
{:ok, {user, _expired_tokens}} ->
|
{:ok, {user, _expired_tokens}} ->
|
||||||
|
info =
|
||||||
|
if was_confirmed?,
|
||||||
|
do: gettext("Welcome back!"),
|
||||||
|
else: gettext("User confirmed successfully.")
|
||||||
|
|
||||||
conn
|
conn
|
||||||
|> put_flash(:info, info)
|
|> put_flash(:info, info)
|
||||||
|> maybe_connect_pending_google(user)
|
|> maybe_connect_pending_google(user)
|
||||||
|
|
|
||||||
|
|
@ -208,11 +208,14 @@ defmodule WhoNeedHelpWeb.UserSessionControllerTest do
|
||||||
|
|
||||||
conn =
|
conn =
|
||||||
post(conn, ~p"/users/log-in", %{
|
post(conn, ~p"/users/log-in", %{
|
||||||
"user" => %{"token" => token}
|
"user" => %{"token" => token},
|
||||||
|
"_action" => "confirmed"
|
||||||
})
|
})
|
||||||
|
|
||||||
assert get_session(conn, :user_token)
|
assert get_session(conn, :user_token)
|
||||||
assert redirected_to(conn) == ~p"/"
|
assert redirected_to(conn) == ~p"/"
|
||||||
|
assert Phoenix.Flash.get(conn.assigns.flash, :info) =~ "Welcome back!"
|
||||||
|
refute Phoenix.Flash.get(conn.assigns.flash, :info) =~ "User confirmed successfully."
|
||||||
|
|
||||||
# Now do a logged in request and assert on the menu
|
# Now do a logged in request and assert on the menu
|
||||||
conn = get(conn, ~p"/")
|
conn = get(conn, ~p"/")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user