Add EnsureAuthenticatedPlug
This commit is contained in:
parent
faf5347748
commit
3cf17dc402
2 changed files with 46 additions and 0 deletions
19
lib/pleroma/plugs/ensure_authenticated_plug.ex
Normal file
19
lib/pleroma/plugs/ensure_authenticated_plug.ex
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
defmodule Pleroma.Plugs.EnsureAuthenticatedPlug do
|
||||||
|
import Plug.Conn
|
||||||
|
alias Pleroma.User
|
||||||
|
|
||||||
|
def init(options) do
|
||||||
|
options
|
||||||
|
end
|
||||||
|
|
||||||
|
def call(%{assigns: %{user: %User{}}} = conn, _) do
|
||||||
|
conn
|
||||||
|
end
|
||||||
|
|
||||||
|
def call(conn, _) do
|
||||||
|
conn
|
||||||
|
|> put_resp_content_type("application/json")
|
||||||
|
|> send_resp(403, Jason.encode!(%{error: "Invalid credentials."}))
|
||||||
|
|> halt
|
||||||
|
end
|
||||||
|
end
|
27
test/plugs/ensure_authenticated_plug_test.exs
Normal file
27
test/plugs/ensure_authenticated_plug_test.exs
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
defmodule Pleroma.Plugs.EnsureAuthenticatedPlugTest do
|
||||||
|
use Pleroma.Web.ConnCase, async: true
|
||||||
|
|
||||||
|
alias Pleroma.Plugs.EnsureAuthenticatedPlug
|
||||||
|
alias Pleroma.User
|
||||||
|
|
||||||
|
test "it halts if no user is assigned", %{conn: conn} do
|
||||||
|
conn =
|
||||||
|
conn
|
||||||
|
|> EnsureAuthenticatedPlug.call(%{})
|
||||||
|
|
||||||
|
assert conn.status == 403
|
||||||
|
assert conn.halted == true
|
||||||
|
end
|
||||||
|
|
||||||
|
test "it continues if a user is assigned", %{conn: conn} do
|
||||||
|
conn =
|
||||||
|
conn
|
||||||
|
|> assign(:user, %User{})
|
||||||
|
|
||||||
|
ret_conn =
|
||||||
|
conn
|
||||||
|
|> EnsureAuthenticatedPlug.call(%{})
|
||||||
|
|
||||||
|
assert ret_conn == conn
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue