Current section
Files
Jump to
Current section
Files
lib/plug/ccs_auth.ex
defmodule Plug.CcsAuth do
import Plug.Conn
def sign(conn, user_huid, phone, udid) do
Phoenix.Token.sign(conn, "user",
%{phone: phone, udid: udid, user_huid: user_huid})
end
def init(opts), do: opts
def call(conn, _opts) do
case Phoenix.Token.verify(conn, "user", parse_bearer_token(conn)) do
{:ok, %{phone: phone, udid: udid, user_huid: user_huid}} ->
conn
|> assign(:phone, phone)
|> assign(:udid, udid)
|> assign(:user_huid, user_huid)
{:error, reason} ->
conn
|> halt()
|> put_resp_content_type("application/json")
|> send_resp(:unauthorized, Poison.encode!(%{error: :unauthorized}))
end
end
defp parse_bearer_token(conn) do
case get_req_header(conn, "authorization") do
["Bearer " <> token] -> token
_ -> nil
end
end
end