[Adminitration] Allow registrations: 3 modes = "close", "allowed", "moderate" - #877

This commit is contained in:
Laurent GAY
2025-09-03 21:07:33 +02:00
parent 8f8aa0ffbe
commit 3e4899c8e4
28 changed files with 526 additions and 19 deletions

View File

@@ -90,6 +90,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Config do
%{
name: Config.instance_name(),
registrations_open: Config.instance_registrations_open?(),
registrations_moderation: Config.instance_registrations_moderation?(),
registrations_allowlist: Config.instance_registrations_allowlist?(),
contact: Config.contact(),
demo_mode: Config.instance_demo_mode?(),

View File

@@ -153,6 +153,11 @@ defmodule Mobilizon.GraphQL.Schema.AdminType do
field(:instance_privacy_policy_url, :string, description: "The instance's privacy policy URL")
field(:instance_rules, :string, description: "The instance's rules")
field(:registrations_open, :boolean, description: "Whether the registrations are opened")
field(:registrations_moderation, :boolean,
description: "Whether the registrations want moderation"
)
field(:instance_languages, list_of(:string), description: "The instance's languages")
end
@@ -464,6 +469,11 @@ defmodule Mobilizon.GraphQL.Schema.AdminType do
arg(:instance_privacy_policy_url, :string, description: "The instance's privacy policy URL")
arg(:instance_rules, :string, description: "The instance's rules")
arg(:registrations_open, :boolean, description: "Whether the registrations are opened")
arg(:registrations_moderation, :boolean,
description: "Whether the registrations want moderation"
)
arg(:instance_languages, list_of(:string), description: "The instance's languages")
middleware(Rajska.QueryAuthorization, permit: :administrator)
resolve(&Admin.save_settings/3)

View File

@@ -26,6 +26,10 @@ defmodule Mobilizon.GraphQL.Schema.ConfigType do
field(:registrations_open, :boolean, description: "Whether the registrations are opened")
field(:registrations_moderation, :boolean,
description: "Whether the registrations want moderation"
)
field(:registrations_allowlist, :boolean,
description: "Whether the registration are on an allowlist"
)

View File

@@ -15,6 +15,7 @@ defmodule Mobilizon.Config do
description: String.t(),
hostname: String.t(),
registrations_open: boolean(),
registrations_moderation: boolean(),
languages: list(String.t()),
default_language: String.t(),
registration_email_allowlist: list(String.t()),
@@ -154,6 +155,17 @@ defmodule Mobilizon.Config do
)
)
@spec instance_registrations_moderation? :: boolean
def instance_registrations_moderation?,
do:
to_boolean(
config_cached_value(
"instance",
"registrations_moderation",
instance_config()[:registrations_moderation]
)
)
@spec instance_languages :: list(String.t())
def instance_languages,
do:
@@ -451,6 +463,7 @@ defmodule Mobilizon.Config do
instance_name: instance_name(),
instance_slogan: instance_slogan(),
registrations_open: instance_registrations_open?(),
registrations_moderation: instance_registrations_moderation?(),
contact: contact(),
primary_color: primary_color(),
secondary_color: secondary_color(),

View File

@@ -53,6 +53,7 @@ defmodule Mobilizon.Web.NodeInfoController do
outbound: ["atom1.0"]
},
openRegistrations: Config.instance_registrations_open?(),
moderationRegistrations: Config.instance_registrations_moderation?(),
usage: %{
users: %{
total: Statistics.get_cached_value(:local_users)