diff options
author | kaniini <nenolod@gmail.com> | 2019-06-04 05:42:49 +0000 |
---|---|---|
committer | kaniini <nenolod@gmail.com> | 2019-06-04 05:42:49 +0000 |
commit | a536f515dd2334e723f4e4c593724760511c5c1b (patch) | |
tree | 61f677d61b1dde0e18fa0abc4e7bc5a296212652 | |
parent | 2be142ebec5292f519d10974c73ab6068a2b96c4 (diff) | |
parent | 83663caa81f1ccca37fe3898feb4ec2d829ad893 (diff) | |
download | pleroma-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.exs | 6 | ||||
-rw-r--r-- | docs/config.md | 2 | ||||
-rw-r--r-- | mix.exs | 25 |
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 @@ -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. |