Packages

Custom Elixir authorization library

Retired package: Release invalid - Useless & Incomplete

Current section

Files

Jump to
microservices_authorization lib plugs permission_check.ex
Raw

lib/plugs/permission_check.ex

defmodule MicroservicesAuthorization.Plugs.PermissionCheck do
import Plug.Conn
def init(opts), do: opts
def authorized?(
%Plug.Conn{
assigns: %{current_user: %{"roles" => roles}},
private: %{:phoenix_action => action}
} = conn
) do
# Implement authentication logic here, e.g. check auth headers,
# session creds, etc.
MicroservicesAuthorization.authorize(roles, Atom.to_string(action))
end
def authorized?(_), do: false
def call(conn, opts) do
# IO.inspect(conn)
# conn
# |> Plug.Conn.read_body()
# |> IO.inspect()
if authorized?(conn) do
conn
else
conn
|> put_resp_content_type("application/json")
|> send_resp(401, '{"message": "Unauthorized request. Check roles." ,"status": "failed"}')
|> halt
end
end
end