UserController: fall back to frontend when user isn't found

This commit is contained in:
Alex Gleason 2021-08-17 18:32:32 -05:00
parent dc63aaf84f
commit b11dbbf403
No known key found for this signature in database
GPG Key ID: 7211D1F99744FBB7
2 changed files with 18 additions and 3 deletions

View File

@ -18,6 +18,8 @@ defmodule Pleroma.Web.Feed.UserController do
def feed_redirect(%{assigns: %{format: "html"}} = conn, %{"nickname" => nickname}) do def feed_redirect(%{assigns: %{format: "html"}} = conn, %{"nickname" => nickname}) do
with {_, %User{} = user} <- {:fetch_user, User.get_cached_by_nickname_or_id(nickname)} do with {_, %User{} = user} <- {:fetch_user, User.get_cached_by_nickname_or_id(nickname)} do
Pleroma.Web.Fallback.RedirectController.redirector_with_meta(conn, %{user: user}) Pleroma.Web.Fallback.RedirectController.redirector_with_meta(conn, %{user: user})
else
_ -> Pleroma.Web.Fallback.RedirectController.redirector(conn, nil)
end end
end end

View File

@ -196,13 +196,26 @@ test "with html format, it redirects to user feed", %{conn: conn} do
).resp_body ).resp_body
end end
test "with html format, it returns error when user is not found", %{conn: conn} do test "with html format, it falls back to frontend when user is remote", %{conn: conn} do
user = insert(:user, local: false)
{:ok, _} = CommonAPI.post(user, %{status: "test"})
response =
conn
|> get("/users/#{user.nickname}")
|> response(200)
assert response =~ "</html>"
end
test "with html format, it falls back to frontend when user is not found", %{conn: conn} do
response = response =
conn conn
|> get("/users/jimm") |> get("/users/jimm")
|> json_response(404) |> response(200)
assert response == %{"error" => "Not found"} assert response =~ "</html>"
end end
test "with non-html / non-json format, it redirects to user feed in atom format", %{ test "with non-html / non-json format, it redirects to user feed in atom format", %{