Преглед на файлове

Add BasicAuthDecoderPlug

tags/v0.9.9
lain преди 5 години
родител
ревизия
42bd985e66
променени са 2 файла, в които са добавени 52 реда и са изтрити 0 реда
  1. +21
    -0
      lib/pleroma/plugs/basic_auth_decoder_plug.ex
  2. +31
    -0
      test/plugs/basic_auth_decoder_plug_test.exs

+ 21
- 0
lib/pleroma/plugs/basic_auth_decoder_plug.ex Целия файл

@@ -0,0 +1,21 @@
defmodule Pleroma.Plugs.BasicAuthDecoderPlug do
import Plug.Conn

def init(options) do
options
end

def call(conn, opts) do
with ["Basic " <> header] <- get_req_header(conn, "authorization"),
{:ok, userinfo} <- Base.decode64(header),
[username, password] <- String.split(userinfo, ":", parts: 2) do
conn
|> assign(:auth_credentials, %{
username: username,
password: password
})
else
_ -> conn
end
end
end

+ 31
- 0
test/plugs/basic_auth_decoder_plug_test.exs Целия файл

@@ -0,0 +1,31 @@
defmodule Pleroma.Plugs.AuthenticationPlugTest do
use Pleroma.Web.ConnCase, async: true

alias Pleroma.Plugs.BasicAuthDecoderPlug

defp basic_auth_enc(username, password) do
"Basic " <> Base.encode64("#{username}:#{password}")
end

test "it puts the decoded credentials into the assigns", %{conn: conn} do
header = basic_auth_enc("moonman", "iloverobek")

conn =
conn
|> put_req_header("authorization", header)
|> BasicAuthDecoderPlug.call(%{})

assert conn.assigns[:auth_credentials] == %{
username: "moonman",
password: "iloverobek"
}
end

test "without a authorization header it doesn't do anything", %{conn: conn} do
ret_conn =
conn
|> BasicAuthDecoderPlug.call(%{})

assert conn == ret_conn
end
end

Loading…
Отказ
Запис