aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorEgor Kislitsyn <egor@kislitsyn.com>2019-11-19 15:58:20 +0700
committerEgor Kislitsyn <egor@kislitsyn.com>2019-11-19 15:58:20 +0700
commit36686f52457454841c6b9c85a137eabeb1e739fc (patch)
tree8d5fbb12d85a8cef9fb1ee8a111346861f4f6050 /lib
parent06151776c0c2c529a1bd3b4866162794c141e95f (diff)
downloadpleroma-36686f52457454841c6b9c85a137eabeb1e739fc.tar.gz
Support authentication via `x-admin-token` HTTP header
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/plugs/admin_secret_authentication_plug.ex22
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