fix signed_in_path to always redirect to /admin after login

Single-tenant app: every user is the admin. The previous pattern
match on conn.assigns.current_scope didn't work for first-time
logins because the scope isn't assigned to the conn yet at that
point, causing the fallback to ~p"/" instead of ~p"/admin".

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
jamey 2026-02-12 14:55:57 +00:00
parent 9251beba68
commit fdb09128b4
6 changed files with 10 additions and 14 deletions

View File

@ -257,12 +257,8 @@ defmodule SimpleshopThemeWeb.UserAuth do
end end
@doc "Returns the path to redirect to after log in." @doc "Returns the path to redirect to after log in."
# the user was already logged in, redirect to admin dashboard # Single-tenant: every user is the admin, always go to dashboard
def signed_in_path(%Plug.Conn{assigns: %{current_scope: %Scope{user: %Accounts.User{}}}}) do def signed_in_path(_), do: ~p"/admin"
~p"/admin"
end
def signed_in_path(_), do: ~p"/"
@doc """ @doc """
Plug for routes that require the user to be authenticated. Plug for routes that require the user to be authenticated.

View File

@ -18,7 +18,7 @@ defmodule SimpleshopThemeWeb.UserSessionControllerTest do
}) })
assert get_session(conn, :user_token) assert get_session(conn, :user_token)
assert redirected_to(conn) == ~p"/" assert redirected_to(conn) == ~p"/admin"
# Now do a logged in request and assert on the page content # Now do a logged in request and assert on the page content
conn = get(conn, ~p"/admin/settings") conn = get(conn, ~p"/admin/settings")
@ -39,7 +39,7 @@ defmodule SimpleshopThemeWeb.UserSessionControllerTest do
}) })
assert conn.resp_cookies["_simpleshop_theme_web_user_remember_me"] assert conn.resp_cookies["_simpleshop_theme_web_user_remember_me"]
assert redirected_to(conn) == ~p"/" assert redirected_to(conn) == ~p"/admin"
end end
test "logs the user in with return to", %{conn: conn, user: user} do test "logs the user in with return to", %{conn: conn, user: user} do
@ -80,7 +80,7 @@ defmodule SimpleshopThemeWeb.UserSessionControllerTest do
}) })
assert get_session(conn, :user_token) assert get_session(conn, :user_token)
assert redirected_to(conn) == ~p"/" assert redirected_to(conn) == ~p"/admin"
# Now do a logged in request and assert on the page content # Now do a logged in request and assert on the page content
conn = get(conn, ~p"/admin/settings") conn = get(conn, ~p"/admin/settings")
@ -99,7 +99,7 @@ defmodule SimpleshopThemeWeb.UserSessionControllerTest do
}) })
assert get_session(conn, :user_token) assert get_session(conn, :user_token)
assert redirected_to(conn) == ~p"/" assert redirected_to(conn) == ~p"/admin"
assert Phoenix.Flash.get(conn.assigns.flash, :info) =~ "User confirmed successfully." assert Phoenix.Flash.get(conn.assigns.flash, :info) =~ "User confirmed successfully."
assert Accounts.get_user!(user.id).confirmed_at assert Accounts.get_user!(user.id).confirmed_at

View File

@ -64,7 +64,7 @@ defmodule SimpleshopThemeWeb.Auth.ConfirmationTest do
assert Accounts.get_user!(user.id).confirmed_at assert Accounts.get_user!(user.id).confirmed_at
# we are logged in now # we are logged in now
assert get_session(conn, :user_token) assert get_session(conn, :user_token)
assert redirected_to(conn) == ~p"/" assert redirected_to(conn) == ~p"/admin"
# log out, new conn # log out, new conn
conn = build_conn() conn = build_conn()

View File

@ -56,7 +56,7 @@ defmodule SimpleshopThemeWeb.Auth.LoginTest do
conn = submit_form(form, conn) conn = submit_form(form, conn)
assert redirected_to(conn) == ~p"/" assert redirected_to(conn) == ~p"/admin"
end end
test "redirects to login page with a flash error if credentials are invalid", %{ test "redirects to login page with a flash error if credentials are invalid", %{

View File

@ -25,7 +25,7 @@ defmodule SimpleshopThemeWeb.Auth.RegistrationTest do
conn conn
|> log_in_user(user_fixture()) |> log_in_user(user_fixture())
|> live(~p"/users/register") |> live(~p"/users/register")
|> follow_redirect(conn, ~p"/") |> follow_redirect(conn, ~p"/admin")
assert {:ok, _conn} = result assert {:ok, _conn} = result
end end

View File

@ -25,7 +25,7 @@ defmodule SimpleshopThemeWeb.UserAuthTest do
conn = UserAuth.log_in_user(conn, user) conn = UserAuth.log_in_user(conn, user)
assert token = get_session(conn, :user_token) assert token = get_session(conn, :user_token)
assert get_session(conn, :live_socket_id) == "users_sessions:#{Base.url_encode64(token)}" assert get_session(conn, :live_socket_id) == "users_sessions:#{Base.url_encode64(token)}"
assert redirected_to(conn) == ~p"/" assert redirected_to(conn) == ~p"/admin"
assert Accounts.get_user_by_session_token(token) assert Accounts.get_user_by_session_token(token)
end end