modify event's participatiants permission - #687

This commit is contained in:
Laurent GAY
2025-11-12 12:15:35 +01:00
committed by setop
parent 8116f03ebf
commit 3cdfc76aff
4 changed files with 313 additions and 4 deletions

View File

@@ -160,7 +160,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Event do
%{context: %{current_actor: %Actor{} = actor}} = _resolution
) do
# Check that moderator has right
if can_event_be_updated_by?(event, actor) do
if can_event_be_access_by?(event, actor) do
roles =
case roles do
nil ->

View File

@@ -25,6 +25,29 @@ defmodule Mobilizon.GraphQL.Resolvers.Event.Utils do
Event.can_be_managed_by?(event, actor_member_id)
end
@spec can_event_be_access_by?(Event.t(), Actor.t()) ::
boolean
def can_event_be_access_by?(
%Event{attributed_to: %Actor{type: :Group, allow_see_participants: true}} = event,
%Actor{} = actor_member
) do
Permission.can_access_group_object?(actor_member, event)
end
def can_event_be_access_by?(
%Event{attributed_to: %Actor{type: :Group, allow_see_participants: false}} = event,
%Actor{} = actor_member
) do
can_event_be_updated_by?(event, actor_member)
end
def can_event_be_access_by?(
%Event{} = event,
%Actor{} = actor_member
) do
can_event_be_updated_by?(event, actor_member)
end
@spec can_event_be_deleted_by?(Event.t(), Actor.t()) ::
boolean
def can_event_be_deleted_by?(

View File

@@ -309,7 +309,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Participant do
}) do
case Events.get_event_with_preload(event_id) do
{:ok, %Event{} = event} ->
if can_event_be_updated_by?(event, moderator_actor) do
if can_event_be_access_by?(event, moderator_actor) do
case export_format(format, event, roles, locale) do
{:ok, path} ->
{:ok, %{path: path, format: format}}