forked from AkkomaGang/akkoma
check for local_public? on AP route
This commit is contained in:
parent
502382da45
commit
34e11cef47
1 changed files with 7 additions and 4 deletions
|
@ -37,10 +37,11 @@ def object(conn, _params) do
|
||||||
with id <- Endpoint.url() <> conn.request_path,
|
with id <- Endpoint.url() <> conn.request_path,
|
||||||
{_, %Activity{} = activity} <-
|
{_, %Activity{} = activity} <-
|
||||||
{:activity, Activity.get_create_by_object_ap_id_with_object(id)},
|
{:activity, Activity.get_create_by_object_ap_id_with_object(id)},
|
||||||
{_, true} <- {:public?, Visibility.is_public?(activity)} do
|
{_, true} <- {:public?, Visibility.is_public?(activity)},
|
||||||
|
{_, false} <- {:local_public?, Visibility.is_local_public?(activity)} do
|
||||||
redirect(conn, to: "/notice/#{activity.id}")
|
redirect(conn, to: "/notice/#{activity.id}")
|
||||||
else
|
else
|
||||||
reason when reason in [{:public?, false}, {:activity, nil}] ->
|
reason when reason in [{:public?, false}, {:activity, nil}, {:local_public?, true}] ->
|
||||||
{:error, :not_found}
|
{:error, :not_found}
|
||||||
|
|
||||||
e ->
|
e ->
|
||||||
|
@ -56,7 +57,8 @@ def activity(%{assigns: %{format: format}} = conn, _params)
|
||||||
def activity(conn, _params) do
|
def activity(conn, _params) do
|
||||||
with id <- Endpoint.url() <> conn.request_path,
|
with id <- Endpoint.url() <> conn.request_path,
|
||||||
{_, %Activity{} = activity} <- {:activity, Activity.normalize(id)},
|
{_, %Activity{} = activity} <- {:activity, Activity.normalize(id)},
|
||||||
{_, true} <- {:public?, Visibility.is_public?(activity)} do
|
{_, true} <- {:public?, Visibility.is_public?(activity)},
|
||||||
|
{_, false} <- {:local_public?, Visibility.is_local_public?(activity)} do
|
||||||
redirect(conn, to: "/notice/#{activity.id}")
|
redirect(conn, to: "/notice/#{activity.id}")
|
||||||
else
|
else
|
||||||
reason when reason in [{:public?, false}, {:activity, nil}] ->
|
reason when reason in [{:public?, false}, {:activity, nil}] ->
|
||||||
|
@ -70,6 +72,7 @@ def activity(conn, _params) do
|
||||||
def notice(%{assigns: %{format: format}} = conn, %{"id" => id}) do
|
def notice(%{assigns: %{format: format}} = conn, %{"id" => id}) do
|
||||||
with {_, %Activity{} = activity} <- {:activity, Activity.get_by_id_with_object(id)},
|
with {_, %Activity{} = activity} <- {:activity, Activity.get_by_id_with_object(id)},
|
||||||
{_, true} <- {:public?, Visibility.is_public?(activity)},
|
{_, true} <- {:public?, Visibility.is_public?(activity)},
|
||||||
|
{_, false} <- {:local_public?, Visibility.is_local_public?(activity)},
|
||||||
%User{} = user <- User.get_cached_by_ap_id(activity.data["actor"]) do
|
%User{} = user <- User.get_cached_by_ap_id(activity.data["actor"]) do
|
||||||
cond do
|
cond do
|
||||||
format in ["json", "activity+json"] ->
|
format in ["json", "activity+json"] ->
|
||||||
|
@ -93,7 +96,7 @@ def notice(%{assigns: %{format: format}} = conn, %{"id" => id}) do
|
||||||
RedirectController.redirector(conn, nil)
|
RedirectController.redirector(conn, nil)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
reason when reason in [{:public?, false}, {:activity, nil}] ->
|
reason when reason in [{:public?, false}, {:local_public?, true}, {:activity, nil}] ->
|
||||||
conn
|
conn
|
||||||
|> put_status(404)
|
|> put_status(404)
|
||||||
|> RedirectController.redirector(nil, 404)
|
|> RedirectController.redirector(nil, 404)
|
||||||
|
|
Loading…
Reference in a new issue