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:
parent
9251beba68
commit
fdb09128b4
@ -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.
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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()
|
||||||
|
|||||||
@ -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", %{
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user