Absinthe middleware actor provider
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
@@ -4,7 +4,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Activity do
|
||||
"""
|
||||
|
||||
import Mobilizon.Users.Guards
|
||||
alias Mobilizon.{Activities, Actors, Users}
|
||||
alias Mobilizon.{Activities, Actors}
|
||||
alias Mobilizon.Actors.Actor
|
||||
alias Mobilizon.Service.Activity.Utils
|
||||
alias Mobilizon.Storage.Page
|
||||
@@ -13,29 +13,23 @@ defmodule Mobilizon.GraphQL.Resolvers.Activity do
|
||||
require Logger
|
||||
|
||||
def group_activity(%Actor{type: :Group, id: group_id}, %{page: page, limit: limit} = args, %{
|
||||
context: %{current_user: %User{role: role} = user}
|
||||
context: %{current_user: %User{role: role}, current_actor: %Actor{id: actor_id}}
|
||||
}) do
|
||||
case Users.get_actor_for_user(user) do
|
||||
%Actor{id: actor_id} = _actor ->
|
||||
if Actors.is_member?(actor_id, group_id) or is_moderator(role) do
|
||||
%Page{total: total, elements: elements} =
|
||||
Activities.list_group_activities_for_member(
|
||||
group_id,
|
||||
actor_id,
|
||||
[type: Map.get(args, :type), author: Map.get(args, :author)],
|
||||
page,
|
||||
limit
|
||||
)
|
||||
if Actors.is_member?(actor_id, group_id) or is_moderator(role) do
|
||||
%Page{total: total, elements: elements} =
|
||||
Activities.list_group_activities_for_member(
|
||||
group_id,
|
||||
actor_id,
|
||||
[type: Map.get(args, :type), author: Map.get(args, :author)],
|
||||
page,
|
||||
limit
|
||||
)
|
||||
|
||||
elements = Enum.map(elements, &Utils.transform_activity/1)
|
||||
elements = Enum.map(elements, &Utils.transform_activity/1)
|
||||
|
||||
{:ok, %Page{total: total, elements: elements}}
|
||||
else
|
||||
{:error, :unauthorized}
|
||||
end
|
||||
|
||||
nil ->
|
||||
{:error, :user_actor_not_found}
|
||||
{:ok, %Page{total: total, elements: elements}}
|
||||
else
|
||||
{:error, :unauthorized}
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user