accent/config/runtime.exs
2024-03-21 21:36:48 -04:00

220 lines
7.3 KiB
Elixir

import Accent.Config
import Config
port = get_env("PORT", :integer) || 4000
canonical_uri = get_env("CANONICAL_URL", :uri) || parse_env("http://localhost:#{port}", :uri)
static_uri = get_env("STATIC_URL", :uri) || canonical_uri
if config_env() === :test do
config :accent, Accent.Endpoint,
adapter: Bandit.PhoenixAdapter,
http: [port: 4001],
server: false,
url: [port: 80, scheme: "http", host: "example.com"],
static_url: [port: 80, scheme: "http", host: "example.com"]
config :accent,
canonical_host: nil,
force_ssl: false,
restricted_domain: nil
else
config :accent,
canonical_host: get_uri_part(canonical_uri, :host),
force_ssl: get_uri_part(canonical_uri, :scheme) === "https",
restricted_domain: get_env("RESTRICTED_PROJECT_CREATOR_EMAIL_DOMAIN") || get_env("RESTRICTED_DOMAIN")
config :accent, Accent.Endpoint,
adapter: Bandit.PhoenixAdapter,
http: [port: port],
url: get_endpoint_url_config(canonical_uri),
static_url: get_endpoint_url_config(static_uri),
debug_errors: get_env("DEBUG_ERRORS", :boolean)
end
if config_env() === :test do
config :accent, Accent.Repo,
pool_size: System.schedulers_online() * 2,
url: get_env("DATABASE_URL")
else
ecto_ipv6? = get_env("ECTO_IPV6", :boolean)
config :accent, Accent.Repo,
timeout: get_env("DATABASE_TIMEOUT", :integer) || 29_000,
queue_target: get_env("DATABASE_QUEUE_TARGET", :integer) || 500,
queue_interval: get_env("DATABASE_QUEUE_INTERVAL", :integer) || 2000,
pool_size: get_env("DATABASE_POOL_SIZE", :integer),
ssl: get_env("DATABASE_SSL", :boolean),
ssl_opts: [verify: :verify_none],
url: get_env("DATABASE_URL") || "postgres://localhost/accent_development",
socket_options: if(ecto_ipv6?, do: [:inet6], else: [])
end
config :accent, Accent.MachineTranslations,
default_providers_config: %{
"google_translate" => %{"key" => get_env("GOOGLE_TRANSLATIONS_SERVICE_ACCOUNT_KEY")},
"deepl" => %{"key" => get_env("DEEPL_TRANSLATIONS_KEY")}
}
config :accent, Accent.Prompts,
default_providers_config: %{
"openai" => %{"key" => get_env("OPENAI_API_KEY")}
}
config :accent, LanguageTool, languages: get_env("LANGUAGE_TOOL_LANGUAGES", :comma_separated_list)
providers = []
providers =
if get_env("GOOGLE_API_CLIENT_ID"),
do: [{:google, {Ueberauth.Strategy.Google, [scope: "email openid"]}} | providers],
else: providers
providers =
if get_env("SLACK_CLIENT_ID"),
do: [
{:slack, {Ueberauth.Strategy.Slack, [default_user_scope: "users:read", team: get_env("SLACK_TEAM_ID")]}}
| providers
],
else: providers
providers =
if get_env("GITHUB_CLIENT_ID"),
do: [{:github, {Ueberauth.Strategy.Github, [default_scope: "user"]}} | providers],
else: providers
providers =
if get_env("GITLAB_CLIENT_ID"),
do: [{:gitlab, {Ueberauth.Strategy.Gitlab, [default_scope: "read_user"]}} | providers],
else: providers
providers =
if get_env("DISCORD_CLIENT_ID"),
do: [{:discord, {Ueberauth.Strategy.Discord, [default_scope: "identify email"]}} | providers],
else: providers
providers =
if get_env("MICROSOFT_CLIENT_ID"),
do: [{:microsoft, {Ueberauth.Strategy.Microsoft, [prompt: "select_account"]}} | providers],
else: providers
providers = if get_env("AUTH0_CLIENT_ID"), do: [{:auth0, {Ueberauth.Strategy.Auth0, []}} | providers], else: providers
providers =
if get_env("OIDC_CLIENT_ID"),
do: [{:oidc, {Ueberauth.Strategy.OIDC, [default: [provider: :default_oidc, uid_field: :sub]]}} | providers],
else: providers
providers =
if get_env("DUMMY_LOGIN_ENABLED"),
do: [{:dummy, {Accent.Auth.Ueberauth.DummyStrategy, []}} | providers],
else: providers
config :ueberauth, Ueberauth, providers: providers
config :ueberauth, Ueberauth.Strategy.Google.OAuth,
client_id: get_env("GOOGLE_API_CLIENT_ID"),
client_secret: get_env("GOOGLE_API_CLIENT_SECRET")
config :ueberauth, Ueberauth.Strategy.Github.OAuth,
client_id: get_env("GITHUB_CLIENT_ID"),
client_secret: get_env("GITHUB_CLIENT_SECRET")
config :ueberauth, Ueberauth.Strategy.Auth0.OAuth,
domain: System.get_env("AUTH0_DOMAIN"),
client_id: System.get_env("AUTH0_CLIENT_ID"),
client_secret: System.get_env("AUTH0_CLIENT_SECRET")
config :ueberauth, Ueberauth.Strategy.Gitlab.OAuth,
client_id: get_env("GITLAB_CLIENT_ID"),
client_secret: get_env("GITLAB_CLIENT_SECRET"),
redirect_uri: "#{static_uri}/auth/gitlab/callback",
site: get_env("GITLAB_SITE_URL") || "https://gitlab.com",
authorize_url: "#{get_env("GITLAB_SITE_URL") || "https://gitlab.com"}/oauth/authorize",
token_url: "#{get_env("GITLAB_SITE_URL") || "https://gitlab.com"}/oauth/token"
config :ueberauth, Ueberauth.Strategy.Slack.OAuth,
client_id: get_env("SLACK_CLIENT_ID"),
client_secret: get_env("SLACK_CLIENT_SECRET")
config :ueberauth, Ueberauth.Strategy.Discord.OAuth,
client_id: get_env("DISCORD_CLIENT_ID"),
client_secret: get_env("DISCORD_CLIENT_SECRET")
config :ueberauth, Ueberauth.Strategy.Microsoft.OAuth,
client_id: get_env("MICROSOFT_CLIENT_ID"),
client_secret: get_env("MICROSOFT_CLIENT_SECRET"),
tenant_id: get_env("MICROSOFT_TENANT_ID")
config :ueberauth, Ueberauth.Strategy.OIDC,
default_oidc: [
fetch_userinfo: true,
uid_field: get_env("OIDC_UID_FIELD") || "sub",
client_id: get_env("OIDC_CLIENT_ID"),
client_secret: get_env("OIDC_CLIENT_SECRET"),
discovery_document_uri: get_env("OIDC_DISCOVERY_URI"),
redirect_uri: "#{static_uri}/auth/oidc/callback",
response_type: "code",
scope: get_env("OIDC_SCOPE") || "openid profile email"
]
config :accent, Accent.WebappView,
path: "priv/static/webapp/index.html",
sentry_dsn: get_env("WEBAPP_SENTRY_DSN") || "",
skip_subresource_integrity: get_env("WEBAPP_SKIP_SUBRESOURCE_INTEGRITY", :boolean)
config :tesla, logger_enabled: true
config :new_relic_agent,
app_name: get_env("NEW_RELIC_APP_NAME"),
license_key: get_env("NEW_RELIC_LICENSE_KEY")
if get_env("SENTRY_DSN") do
config :sentry,
dsn: get_env("SENTRY_DSN"),
environment_name: get_env("SENTRY_ENVIRONMENT_NAME"),
included_environments: ~w(dev prod production),
root_source_code_path: File.cwd!()
else
config :sentry, included_environments: []
end
config :accent, Accent.Mailer,
mailer_from: get_env("MAILER_FROM"),
x_smtpapi_header: get_env("SMTP_API_HEADER")
cond do
get_env("SENDGRID_API_KEY") ->
config :accent, Accent.Mailer,
adapter: Bamboo.SendGridAdapter,
api_key: get_env("SENDGRID_API_KEY")
get_env("MANDRILL_API_KEY") ->
config :accent, Accent.Mailer,
adapter: Bamboo.MandrillAdapter,
api_key: get_env("MANDRILL_API_KEY")
get_env("MAILGUN_API_KEY") ->
config :accent, Accent.Mailer,
adapter: Bamboo.MailgunAdapter,
api_key: get_env("MAILGUN_API_KEY"),
domain: get_env("MAILGUN_DOMAIN"),
base_uri: get_env("MAILGUN_BASE_URI")
get_env("SMTP_ADDRESS") ->
config :accent, Accent.Mailer,
adapter: BambooSMTPAdapterWithTlsOptions,
server: get_env("SMTP_ADDRESS"),
port: get_env("SMTP_PORT"),
username: get_env("SMTP_USERNAME"),
password: get_env("SMTP_PASSWORD")
config_env() == :test ->
config :accent, Accent.Mailer,
mailer_from: "accent-test@example.com",
x_smtpapi_header: ~s({"category": ["test", "accent-api-test"]}),
adapter: Bamboo.TestAdapter
true ->
config :accent, Accent.Mailer, adapter: Bamboo.LocalAdapter
end