defmodule Rad2.Auth.Plug do import Plug.Conn require Logger alias Rad2.Auth def init(opts), do: opts def call(conn, _opts) do case get_req_header(conn, "authorization") do [] -> send_unauthorized(conn) [<<_type::bytes-size(6)>> <> " " <> token] -> case Auth.validate_jwt(token) do {:ok, companies} -> assign(conn, :companies, companies) {:error, _reason} -> send_unauthorized(conn) end _another -> send_unauthorized(conn) end end defp send_unauthorized(conn) do headers = [ {"content-type", "application/json"} ] body = ~s({"message": "unhautorized"}) conn |> prepend_resp_headers(headers) |> send_resp(401, body) |> halt() end end