aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkaniini <nenolod@gmail.com>2019-06-04 05:42:49 +0000
committerkaniini <nenolod@gmail.com>2019-06-04 05:42:49 +0000
commita536f515dd2334e723f4e4c593724760511c5c1b (patch)
tree61f677d61b1dde0e18fa0abc4e7bc5a296212652
parent2be142ebec5292f519d10974c73ab6068a2b96c4 (diff)
parent83663caa81f1ccca37fe3898feb4ec2d829ad893 (diff)
downloadpleroma-a536f515dd2334e723f4e4c593724760511c5c1b.tar.gz
Merge branch 'ueberauth_config_extension' into 'develop'
Ueberauth: extended format of OAUTH_CONSUMER_STRATEGIES to allow explicit dependency specification See merge request pleroma/pleroma!1234
-rw-r--r--config/config.exs6
-rw-r--r--docs/config.md2
-rw-r--r--mix.exs25
3 files changed, 24 insertions, 9 deletions
diff --git a/config/config.exs b/config/config.exs
index 09c3be7de..2c71f4a27 100644
--- a/config/config.exs
+++ b/config/config.exs
@@ -459,7 +459,11 @@ config :pleroma, :ldap,
config :esshd,
enabled: false
-oauth_consumer_strategies = String.split(System.get_env("OAUTH_CONSUMER_STRATEGIES") || "")
+oauth_consumer_strategies =
+ System.get_env("OAUTH_CONSUMER_STRATEGIES")
+ |> to_string()
+ |> String.split()
+ |> Enum.map(&hd(String.split(&1, ":")))
ueberauth_providers =
for strategy <- oauth_consumer_strategies do
diff --git a/docs/config.md b/docs/config.md
index 4797879d6..e37ae6b95 100644
--- a/docs/config.md
+++ b/docs/config.md
@@ -497,7 +497,7 @@ Authentication / authorization settings.
* `auth_template`: authentication form template. By default it's `show.html` which corresponds to `lib/pleroma/web/templates/o_auth/o_auth/show.html.eex`.
* `oauth_consumer_template`: OAuth consumer mode authentication form template. By default it's `consumer.html` which corresponds to `lib/pleroma/web/templates/o_auth/o_auth/consumer.html.eex`.
-* `oauth_consumer_strategies`: the list of enabled OAuth consumer strategies; by default it's set by OAUTH_CONSUMER_STRATEGIES environment variable.
+* `oauth_consumer_strategies`: the list of enabled OAuth consumer strategies; by default it's set by OAUTH_CONSUMER_STRATEGIES environment variable. Each entry in this space-delimited string should be of format `<strategy>` or `<strategy>:<dependency>` (e.g. `twitter` or `keycloak:ueberauth_keycloak_strategy` in case dependency is named differently than `ueberauth_<strategy>`).
## OAuth consumer mode
diff --git a/mix.exs b/mix.exs
index b2017ef9b..df1a7ced4 100644
--- a/mix.exs
+++ b/mix.exs
@@ -51,16 +51,27 @@ defmodule Pleroma.Mixfile do
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
+ # Specifies OAuth dependencies.
+ defp oauth_deps do
+ oauth_strategy_packages =
+ System.get_env("OAUTH_CONSUMER_STRATEGIES")
+ |> to_string()
+ |> String.split()
+ |> Enum.map(fn strategy_entry ->
+ with [_strategy, dependency] <- String.split(strategy_entry, ":") do
+ dependency
+ else
+ [strategy] -> "ueberauth_#{strategy}"
+ end
+ end)
+
+ for s <- oauth_strategy_packages, do: {String.to_atom(s), ">= 0.0.0"}
+ end
+
# Specifies your project dependencies.
#
# Type `mix help deps` for examples and options.
defp deps do
- oauth_strategies = String.split(System.get_env("OAUTH_CONSUMER_STRATEGIES") || "")
-
- oauth_deps =
- for s <- oauth_strategies,
- do: {String.to_atom("ueberauth_#{s}"), ">= 0.0.0"}
-
[
{:phoenix, "~> 1.4.1"},
{:plug_cowboy, "~> 2.0"},
@@ -121,7 +132,7 @@ defmodule Pleroma.Mixfile do
{:ex_rated, "~> 1.2"},
{:plug_static_index_html, "~> 1.0.0"},
{:excoveralls, "~> 0.11.1", only: :test}
- ] ++ oauth_deps
+ ] ++ oauth_deps()
end
# Aliases are shortcuts or tasks specific to the current project.