fix(backend): admin cant access profile page
This commit is contained in:
@@ -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")}
|
||||||
|
|||||||
Reference in New Issue
Block a user