Packages
integratedb
0.1.0
IntegrateDB is a database sharing system. It provides integration primitives and data ownership and migration controls. Use it to integrate applications directly through a Postgres database.
Current section
Files
Jump to
Current section
Files
lib/integrate_web/plugs/auth_required_plug.ex
defmodule IntegrateWeb.AuthRequiredPlug do
@moduledoc """
Ensures that we have a `conn.assigns[:current_user]`.
If not, returns a 401 response with a JSON error payload.
"""
@behaviour Plug
alias Plug.Conn
alias Phoenix.Controller
@error_message %{
error: %{
code: 401,
message: "Unauthorized"
}
}
def init(opts), do: opts
def call(conn, _opts) do
conn.assigns
|> Map.get(:current_user)
|> authorize(conn)
end
def authorize(nil, conn) do
conn
|> Conn.put_status(401)
|> Controller.json(@error_message)
|> Conn.halt()
end
def authorize(_user, conn) do
conn
end
end