2020-01-26 19:34:25 +00:00
|
|
|
defmodule Mobilizon.GraphQL.Schema.ConfigType do
|
2019-03-22 09:53:38 +00:00
|
|
|
@moduledoc """
|
|
|
|
Schema representation for User
|
|
|
|
"""
|
|
|
|
use Absinthe.Schema.Notation
|
|
|
|
|
2020-01-26 19:34:25 +00:00
|
|
|
alias Mobilizon.GraphQL.Resolvers.Config
|
2019-03-22 09:53:38 +00:00
|
|
|
|
|
|
|
@desc "A config object"
|
|
|
|
object :config do
|
|
|
|
# Instance name
|
2020-11-19 16:06:28 +00:00
|
|
|
field(:name, :string, description: "The instance's name")
|
|
|
|
field(:description, :string, description: "The instance's short description")
|
|
|
|
field(:long_description, :string, description: "The instance's long description")
|
|
|
|
field(:slogan, :string, description: "The instance's slogan")
|
|
|
|
field(:contact, :string, description: "The instance's contact details")
|
|
|
|
|
|
|
|
field(:languages, list_of(:string), description: "The instance's admins languages")
|
|
|
|
field(:registrations_open, :boolean, description: "Whether the registrations are opened")
|
|
|
|
|
|
|
|
field(:registrations_allowlist, :boolean,
|
|
|
|
description: "Whether the registration are on an allowlist"
|
|
|
|
)
|
|
|
|
|
|
|
|
field(:demo_mode, :boolean, description: "Whether the demo mode is enabled")
|
|
|
|
field(:country_code, :string, description: "The country code from the IP")
|
|
|
|
field(:location, :lonlat, description: "The IP's location")
|
|
|
|
field(:geocoding, :geocoding, description: "The instance's geocoding settings")
|
|
|
|
field(:maps, :maps, description: "The instance's maps settings")
|
|
|
|
field(:anonymous, :anonymous, description: "The instance's anonymous action settings")
|
|
|
|
|
|
|
|
field(:resource_providers, list_of(:resource_provider),
|
|
|
|
description: "The instance's enabled resource providers"
|
|
|
|
)
|
|
|
|
|
|
|
|
field(:timezones, list_of(:string), description: "The instance's available timezones")
|
|
|
|
field(:features, :features, description: "The instance's features")
|
|
|
|
field(:version, :string, description: "The instance's version")
|
|
|
|
field(:federating, :boolean, description: "Whether this instance is federation")
|
2019-12-20 12:04:34 +00:00
|
|
|
|
|
|
|
field(:terms, :terms, description: "The instance's terms") do
|
2020-11-19 16:06:28 +00:00
|
|
|
arg(:locale, :string,
|
|
|
|
default_value: "en",
|
|
|
|
description:
|
|
|
|
"The user's locale. The terms will be translated in their language, if available."
|
|
|
|
)
|
|
|
|
|
2019-12-20 12:04:34 +00:00
|
|
|
resolve(&Config.terms/3)
|
|
|
|
end
|
2020-06-15 09:01:49 +00:00
|
|
|
|
2020-06-19 17:27:10 +00:00
|
|
|
field(:privacy, :privacy, description: "The instance's privacy policy") do
|
2020-11-19 16:06:28 +00:00
|
|
|
arg(:locale, :string,
|
|
|
|
default_value: "en",
|
|
|
|
description:
|
|
|
|
"The user's locale. The privacy policy will be translated in their language, if available."
|
|
|
|
)
|
|
|
|
|
2020-06-19 17:27:10 +00:00
|
|
|
resolve(&Config.privacy/3)
|
|
|
|
end
|
|
|
|
|
2020-06-15 09:01:49 +00:00
|
|
|
field(:rules, :string, description: "The instance's rules")
|
2020-11-19 16:06:28 +00:00
|
|
|
|
2020-06-27 17:12:45 +00:00
|
|
|
field(:auth, :auth, description: "The instance auth methods")
|
2019-12-20 12:04:34 +00:00
|
|
|
end
|
|
|
|
|
2020-11-19 16:06:28 +00:00
|
|
|
@desc """
|
|
|
|
The instance's terms configuration
|
|
|
|
"""
|
2019-12-20 12:04:34 +00:00
|
|
|
object :terms do
|
2020-11-19 16:06:28 +00:00
|
|
|
field(:url, :string, description: "The instance's terms URL.")
|
|
|
|
field(:type, :instance_terms_type, description: "The instance's terms type")
|
|
|
|
field(:body_html, :string, description: "The instance's terms body text")
|
2019-11-08 18:37:14 +00:00
|
|
|
end
|
|
|
|
|
2020-11-19 16:06:28 +00:00
|
|
|
@desc """
|
|
|
|
The instance's privacy policy configuration
|
|
|
|
"""
|
2020-06-19 17:27:10 +00:00
|
|
|
object :privacy do
|
2020-11-19 16:06:28 +00:00
|
|
|
field(:url, :string, description: "The instance's privacy policy URL")
|
|
|
|
field(:type, :instance_privacy_type, description: "The instance's privacy policy type")
|
|
|
|
field(:body_html, :string, description: "The instance's privacy policy body text")
|
2020-06-19 17:27:10 +00:00
|
|
|
end
|
|
|
|
|
2020-11-19 16:06:28 +00:00
|
|
|
@desc """
|
|
|
|
Geographic coordinates
|
|
|
|
"""
|
2019-11-08 18:37:14 +00:00
|
|
|
object :lonlat do
|
2020-11-19 16:06:28 +00:00
|
|
|
field(:longitude, :float, description: "The coordinates longitude")
|
|
|
|
field(:latitude, :float, description: "The coordinates latitude")
|
2020-06-09 13:20:07 +00:00
|
|
|
# field(:accuracy_radius, :integer)
|
2019-03-22 09:53:38 +00:00
|
|
|
end
|
|
|
|
|
2020-11-19 16:06:28 +00:00
|
|
|
@desc """
|
|
|
|
Instance geocoding configuration
|
|
|
|
"""
|
2019-11-20 12:49:57 +00:00
|
|
|
object :geocoding do
|
2020-11-19 16:06:28 +00:00
|
|
|
field(:autocomplete, :boolean,
|
|
|
|
description: "Whether autocomplete in address fields can be enabled"
|
|
|
|
)
|
|
|
|
|
|
|
|
field(:provider, :string, description: "The geocoding provider")
|
2019-11-20 12:49:57 +00:00
|
|
|
end
|
|
|
|
|
2020-11-19 16:06:28 +00:00
|
|
|
@desc """
|
|
|
|
Instance maps configuration
|
|
|
|
"""
|
2019-11-20 12:49:57 +00:00
|
|
|
object :maps do
|
2020-11-19 16:06:28 +00:00
|
|
|
field(:tiles, :tiles, description: "The instance's maps tiles configuration")
|
2019-11-20 12:49:57 +00:00
|
|
|
end
|
|
|
|
|
2020-11-19 16:06:28 +00:00
|
|
|
@desc """
|
|
|
|
Instance tiles configuration
|
|
|
|
"""
|
2019-11-20 12:49:57 +00:00
|
|
|
object :tiles do
|
2020-11-19 16:06:28 +00:00
|
|
|
field(:endpoint, :string, description: "The instance's tiles endpoint")
|
|
|
|
field(:attribution, :string, description: "The instance's tiles attribution text")
|
2019-11-20 12:49:57 +00:00
|
|
|
end
|
|
|
|
|
2020-11-19 16:06:28 +00:00
|
|
|
@desc """
|
|
|
|
Instance anonymous configuration
|
|
|
|
"""
|
2019-12-20 12:04:34 +00:00
|
|
|
object :anonymous do
|
2020-11-19 16:06:28 +00:00
|
|
|
field(:participation, :anonymous_participation,
|
|
|
|
description: "The instance's anonymous participation settings"
|
|
|
|
)
|
|
|
|
|
|
|
|
field(:event_creation, :anonymous_event_creation,
|
|
|
|
description: "The instance's anonymous event creation settings"
|
|
|
|
)
|
|
|
|
|
|
|
|
field(:reports, :anonymous_reports, description: "The instance's anonymous reports setting")
|
|
|
|
|
|
|
|
field(:actor_id, :id,
|
|
|
|
description: "The actor ID that should be used to perform anonymous actions"
|
|
|
|
)
|
2019-12-20 12:04:34 +00:00
|
|
|
end
|
|
|
|
|
2020-11-19 16:06:28 +00:00
|
|
|
@desc """
|
|
|
|
Instance anonymous participation configuration
|
|
|
|
"""
|
2019-12-20 12:04:34 +00:00
|
|
|
object :anonymous_participation do
|
2020-11-19 16:06:28 +00:00
|
|
|
field(:allowed, :boolean, description: "Whether anonymous participations are allowed")
|
|
|
|
|
|
|
|
field(:validation, :anonymous_participation_validation,
|
|
|
|
description: "The ways to validate anonymous participations"
|
|
|
|
)
|
2019-12-20 12:04:34 +00:00
|
|
|
end
|
|
|
|
|
2020-11-19 16:06:28 +00:00
|
|
|
@desc """
|
|
|
|
Instance anonymous participation validation configuration
|
|
|
|
"""
|
2019-12-20 12:04:34 +00:00
|
|
|
object :anonymous_participation_validation do
|
2020-11-19 16:06:28 +00:00
|
|
|
field(:email, :anonymous_participation_validation_email,
|
|
|
|
description: "The policy to validate anonymous participations by email"
|
|
|
|
)
|
|
|
|
|
|
|
|
field(:captcha, :anonymous_participation_validation_captcha,
|
|
|
|
description: "The policy to validate anonymous participations by captcha"
|
|
|
|
)
|
2019-12-20 12:04:34 +00:00
|
|
|
end
|
|
|
|
|
2020-11-19 16:06:28 +00:00
|
|
|
@desc """
|
|
|
|
Instance anonymous participation with validation by email configuration
|
|
|
|
"""
|
2019-12-20 12:04:34 +00:00
|
|
|
object :anonymous_participation_validation_email do
|
2020-11-19 16:06:28 +00:00
|
|
|
field(:enabled, :boolean,
|
|
|
|
description: "Whether anonymous participation validation by email is enabled"
|
|
|
|
)
|
|
|
|
|
|
|
|
field(:confirmation_required, :boolean,
|
|
|
|
description: "Whether anonymous participation validation by email is required"
|
|
|
|
)
|
2019-12-20 12:04:34 +00:00
|
|
|
end
|
|
|
|
|
2020-11-19 16:06:28 +00:00
|
|
|
@desc """
|
|
|
|
Instance anonymous participation with validation by captcha configuration
|
|
|
|
"""
|
2019-12-20 12:04:34 +00:00
|
|
|
object :anonymous_participation_validation_captcha do
|
2020-11-19 16:06:28 +00:00
|
|
|
field(:enabled, :boolean,
|
|
|
|
description: "Whether anonymous participation validation by captcha is enabled"
|
|
|
|
)
|
2019-12-20 12:04:34 +00:00
|
|
|
end
|
|
|
|
|
2020-11-19 16:06:28 +00:00
|
|
|
@desc """
|
|
|
|
Instance anonymous event creation configuration
|
|
|
|
"""
|
2019-12-20 12:04:34 +00:00
|
|
|
object :anonymous_event_creation do
|
2020-11-19 16:06:28 +00:00
|
|
|
field(:allowed, :boolean, description: "Whether anonymous event creation is enabled")
|
|
|
|
|
|
|
|
field(:validation, :anonymous_event_creation_validation,
|
|
|
|
description: "The methods to validate events created anonymously"
|
|
|
|
)
|
2019-12-20 12:04:34 +00:00
|
|
|
end
|
|
|
|
|
2020-11-19 16:06:28 +00:00
|
|
|
@desc """
|
|
|
|
Instance anonymous event creation validation configuration
|
|
|
|
"""
|
2019-12-20 12:04:34 +00:00
|
|
|
object :anonymous_event_creation_validation do
|
2020-11-19 16:06:28 +00:00
|
|
|
field(:email, :anonymous_event_creation_validation_email,
|
|
|
|
description: "The policy to validate anonymous event creations by email"
|
|
|
|
)
|
|
|
|
|
|
|
|
field(:captcha, :anonymous_event_creation_validation_captcha,
|
|
|
|
description: "The policy to validate anonymous event creations by captcha"
|
|
|
|
)
|
2019-12-20 12:04:34 +00:00
|
|
|
end
|
|
|
|
|
2020-11-19 16:06:28 +00:00
|
|
|
@desc """
|
|
|
|
Instance anonymous event creation email validation configuration
|
|
|
|
"""
|
2019-12-20 12:04:34 +00:00
|
|
|
object :anonymous_event_creation_validation_email do
|
2020-11-19 16:06:28 +00:00
|
|
|
field(:enabled, :boolean,
|
|
|
|
description: "Whether anonymous event creation with email validation is enabled"
|
|
|
|
)
|
|
|
|
|
|
|
|
field(:confirmation_required, :boolean,
|
|
|
|
description: "Whether anonymous event creation with email validation is required"
|
|
|
|
)
|
2019-12-20 12:04:34 +00:00
|
|
|
end
|
|
|
|
|
2020-11-19 16:06:28 +00:00
|
|
|
@desc """
|
|
|
|
Instance anonymous event creation captcha validation configuration
|
|
|
|
"""
|
2019-12-20 12:04:34 +00:00
|
|
|
object :anonymous_event_creation_validation_captcha do
|
2020-11-19 16:06:28 +00:00
|
|
|
field(:enabled, :boolean,
|
|
|
|
description: "Whether anonymous event creation with validation by captcha is enabled"
|
|
|
|
)
|
2019-12-20 12:04:34 +00:00
|
|
|
end
|
|
|
|
|
2020-11-19 16:06:28 +00:00
|
|
|
@desc """
|
|
|
|
Instance anonymous reports
|
|
|
|
"""
|
2020-06-09 12:07:49 +00:00
|
|
|
object :anonymous_reports do
|
2020-11-19 16:06:28 +00:00
|
|
|
field(:allowed, :boolean, description: "Whether anonymous reports are allowed")
|
2020-06-09 12:07:49 +00:00
|
|
|
end
|
|
|
|
|
2020-11-19 16:06:28 +00:00
|
|
|
@desc """
|
|
|
|
A resource provider details
|
|
|
|
"""
|
2020-02-18 07:57:00 +00:00
|
|
|
object :resource_provider do
|
2020-11-19 16:06:28 +00:00
|
|
|
field(:type, :string, description: "The resource provider's type")
|
|
|
|
field(:endpoint, :string, description: "The resource provider's endpoint")
|
|
|
|
field(:software, :string, description: "The resource provider's software")
|
2020-02-18 07:57:00 +00:00
|
|
|
end
|
|
|
|
|
2020-11-19 16:06:28 +00:00
|
|
|
@desc """
|
|
|
|
The instance's features
|
|
|
|
"""
|
2020-06-08 14:47:57 +00:00
|
|
|
object :features do
|
2020-11-19 16:06:28 +00:00
|
|
|
field(:groups, :boolean, description: "Whether groups are activated on this instance")
|
|
|
|
|
|
|
|
field(:event_creation, :boolean,
|
|
|
|
description: "Whether event creation is allowed on this instance"
|
|
|
|
)
|
2020-06-08 14:47:57 +00:00
|
|
|
end
|
|
|
|
|
2020-11-19 16:06:28 +00:00
|
|
|
@desc """
|
|
|
|
The instance's auth configuration
|
|
|
|
"""
|
2020-06-27 17:12:45 +00:00
|
|
|
object :auth do
|
|
|
|
field(:ldap, :boolean, description: "Whether or not LDAP auth is enabled")
|
|
|
|
field(:oauth_providers, list_of(:oauth_provider), description: "List of oauth providers")
|
|
|
|
end
|
|
|
|
|
2020-11-19 16:06:28 +00:00
|
|
|
@desc """
|
|
|
|
An oAuth Provider
|
|
|
|
"""
|
2020-06-27 17:12:45 +00:00
|
|
|
object :oauth_provider do
|
|
|
|
field(:id, :string, description: "The provider ID")
|
|
|
|
field(:label, :string, description: "The label for the auth provider")
|
|
|
|
end
|
|
|
|
|
2019-03-22 09:53:38 +00:00
|
|
|
object :config_queries do
|
|
|
|
@desc "Get the instance config"
|
|
|
|
field :config, :config do
|
|
|
|
resolve(&Config.get_config/3)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|