Packages
Custom Elixir authorization library
Retired package: Release invalid - Useless & Incomplete
Current section
Files
Jump to
Current section
Files
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