Current section

Files

Jump to
carny lib carny.ex
Raw

lib/carny.ex

defmodule Carny do
alias Carny.{Identifier, Policy}
def require_permission(privilege, %Identifier{} = id, %Policy{} = policy, f) do
case Policy.authorized?(privilege, id, policy) do
true -> f.()
false -> {:error, :unauthorized}
end
end
def require_permission(privilege, id, policy, f) do
id = id |> atom_map() |> Identifier.from_map()
require_permission(privilege, id, Policy.from_map(policy), f)
end
defp atom_map(t), do: Map.new(t, fn {k, v} -> {String.to_atom(k), v} end)
end