fix(backend): admin cant access profile page

This commit is contained in:
setop
2025-05-28 13:03:51 +02:00
parent 1ad8b268ed
commit 265803cb26

View File

@@ -2,6 +2,9 @@ defmodule Mobilizon.GraphQL.Resolvers.FeedToken do
@moduledoc """ @moduledoc """
Handles the feed tokens-related GraphQL calls. Handles the feed tokens-related GraphQL calls.
""" """
import Mobilizon.Users.Guards
import Ecto.Query import Ecto.Query
alias Mobilizon.Storage.Repo alias Mobilizon.Storage.Repo
@@ -43,6 +46,19 @@ defmodule Mobilizon.GraphQL.Resolvers.FeedToken do
{:error, dgettext("errors", "You are not allowed to create a feed token if not connected")} {:error, dgettext("errors", "You are not allowed to create a feed token if not connected")}
end end
@doc """
Retrieve a feed token for actor, if user is admin
"""
@spec actor_tokens(any, map, map) :: {:ok, map} | {:error, String.t()}
def actor_tokens(
%Actor{id: actor_id},
_args,
%{context: %{current_user: %User{role: role}}}
)
when is_admin(role) do
{:ok, get_actor_tokens(actor_id)}
end
@doc """ @doc """
Retrieve a feed token for actor, if actor belongs to logged user Retrieve a feed token for actor, if actor belongs to logged user
""" """
@@ -54,19 +70,21 @@ defmodule Mobilizon.GraphQL.Resolvers.FeedToken do
) do ) do
case User.owns_actor(user, actor_id) do case User.owns_actor(user, actor_id) do
{:is_owned, %Actor{}} -> {:is_owned, %Actor{}} ->
res = {:ok, get_actor_tokens(actor_id)}
actor_id
|> feed_token_for_actor_query()
|> Repo.all()
|> Enum.map(&to_short_uuid/1)
{:ok, res}
{:is_owned, _} -> {:is_owned, _} ->
{:error, dgettext("errors", "You don't have permission to get this token")} {:error, dgettext("errors", "You don't have permission to get this token")}
end end
end end
@spec get_actor_tokens(string) :: list
defp get_actor_tokens(actor_id) do
actor_id
|> feed_token_for_actor_query()
|> Repo.all()
|> Enum.map(&to_short_uuid/1)
end
@spec actor_tokens(any, map, map) :: {:error, String.t()} @spec actor_tokens(any, map, map) :: {:error, String.t()}
def actor_tokens(_parent, _args, %{}) do def actor_tokens(_parent, _args, %{}) do
{:error, dgettext("errors", "You are not allowed to get a feed token if not connected")} {:error, dgettext("errors", "You are not allowed to get a feed token if not connected")}