Some fixes

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2021-10-11 17:13:57 +02:00
parent d58ca5743d
commit 62af1e72d6
5 changed files with 54 additions and 27 deletions

View File

@@ -10,7 +10,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Group do
alias Mobilizon.Federation.ActivityPub.Actions
alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
alias Mobilizon.GraphQL.API
alias Mobilizon.Users.User
alias Mobilizon.Users.{User, UserRole}
alias Mobilizon.Web.Upload
import Mobilizon.Web.Gettext
@@ -143,14 +143,14 @@ defmodule Mobilizon.GraphQL.Resolvers.Group do
}
}
) do
if Config.only_admin_can_create_groups?() and not is_admin(role) do
{:error, "only admins can create groups"}
else
with args when is_map(args) <-
Map.update(args, :preferred_username, "", &String.downcase/1),
args when is_map(args) <- Map.put(args, :creator_actor, creator_actor),
args when is_map(args) <- Map.put(args, :creator_actor_id, creator_actor_id),
{:picture, args} when is_map(args) <- {:picture, save_attached_pictures(args)},
if can_create_group?(role) do
args =
args
|> Map.update(:preferred_username, "", &String.downcase/1)
|> Map.put(:creator_actor, creator_actor)
|> Map.put(:creator_actor_id, creator_actor_id)
with {:picture, args} when is_map(args) <- {:picture, save_attached_pictures(args)},
{:ok, _activity, %Actor{type: :Group} = group} <-
API.Groups.create_group(args) do
{:ok, group}
@@ -161,6 +161,8 @@ defmodule Mobilizon.GraphQL.Resolvers.Group do
{:error, err} when is_binary(err) ->
{:error, err}
end
else
{:error, dgettext("errors", "Only admins can create groups")}
end
end
@@ -168,6 +170,15 @@ defmodule Mobilizon.GraphQL.Resolvers.Group do
{:error, "You need to be logged-in to create a group"}
end
@spec can_create_group?(UserRole.t()) :: boolean()
defp can_create_group?(role) do
if Config.only_admin_can_create_groups?() do
is_admin(role)
else
true
end
end
@doc """
Update a group. The creator is automatically added as admin
"""