Ueberauth: extended format of OAUTH_CONSUMER_STRATEGIES to allow explicit dependency specification.
This commit is contained in:
parent
e706b42f51
commit
83663caa81
3 changed files with 24 additions and 9 deletions
|
@ -453,7 +453,11 @@
|
||||||
config :esshd,
|
config :esshd,
|
||||||
enabled: false
|
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 =
|
ueberauth_providers =
|
||||||
for strategy <- oauth_consumer_strategies do
|
for strategy <- oauth_consumer_strategies do
|
||||||
|
|
|
@ -492,7 +492,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`.
|
* `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_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
|
## OAuth consumer mode
|
||||||
|
|
||||||
|
|
25
mix.exs
25
mix.exs
|
@ -51,16 +51,27 @@ def application do
|
||||||
defp elixirc_paths(:test), do: ["lib", "test/support"]
|
defp elixirc_paths(:test), do: ["lib", "test/support"]
|
||||||
defp elixirc_paths(_), do: ["lib"]
|
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.
|
# Specifies your project dependencies.
|
||||||
#
|
#
|
||||||
# Type `mix help deps` for examples and options.
|
# Type `mix help deps` for examples and options.
|
||||||
defp deps do
|
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"},
|
{:phoenix, "~> 1.4.1"},
|
||||||
{:plug_cowboy, "~> 2.0"},
|
{:plug_cowboy, "~> 2.0"},
|
||||||
|
@ -121,7 +132,7 @@ defp deps do
|
||||||
{:ex_rated, "~> 1.2"},
|
{:ex_rated, "~> 1.2"},
|
||||||
{:plug_static_index_html, "~> 1.0.0"},
|
{:plug_static_index_html, "~> 1.0.0"},
|
||||||
{:excoveralls, "~> 0.11.1", only: :test}
|
{:excoveralls, "~> 0.11.1", only: :test}
|
||||||
] ++ oauth_deps
|
] ++ oauth_deps()
|
||||||
end
|
end
|
||||||
|
|
||||||
# Aliases are shortcuts or tasks specific to the current project.
|
# Aliases are shortcuts or tasks specific to the current project.
|
||||||
|
|
Loading…
Reference in a new issue