diff options
author | lain <lain@soykaf.club> | 2019-11-19 13:16:49 +0000 |
---|---|---|
committer | lain <lain@soykaf.club> | 2019-11-19 13:16:49 +0000 |
commit | bf89e0bf38d9709f6dd331f5d9b326575994423d (patch) | |
tree | 8d5fbb12d85a8cef9fb1ee8a111346861f4f6050 /lib | |
parent | 06151776c0c2c529a1bd3b4866162794c141e95f (diff) | |
parent | 36686f52457454841c6b9c85a137eabeb1e739fc (diff) | |
download | pleroma-bf89e0bf38d9709f6dd331f5d9b326575994423d.tar.gz |
Merge branch 'feature/admin-api/support-token-header' into 'develop'
Admin API: Support authentication via `x-admin-token` HTTP header
Closes #1430
See merge request pleroma/pleroma!1993
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/plugs/admin_secret_authentication_plug.ex | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/lib/pleroma/plugs/admin_secret_authentication_plug.ex b/lib/pleroma/plugs/admin_secret_authentication_plug.ex index fdadd476e..49dea452d 100644 --- a/lib/pleroma/plugs/admin_secret_authentication_plug.ex +++ b/lib/pleroma/plugs/admin_secret_authentication_plug.ex @@ -16,14 +16,28 @@ defmodule Pleroma.Plugs.AdminSecretAuthenticationPlug do def call(%{assigns: %{user: %User{}}} = conn, _), do: conn - def call(%{params: %{"admin_token" => admin_token}} = conn, _) do - if secret_token() && admin_token == secret_token() do + def call(conn, _) do + if secret_token() do + authenticate(conn) + else conn - |> assign(:user, %User{is_admin: true}) + end + end + + def authenticate(%{params: %{"admin_token" => admin_token}} = conn) do + if admin_token == secret_token() do + assign(conn, :user, %User{is_admin: true}) else conn end end - def call(conn, _), do: conn + def authenticate(conn) do + token = secret_token() + + case get_req_header(conn, "x-admin-token") do + [^token] -> assign(conn, :user, %User{is_admin: true}) + _ -> conn + end + end end |