Current section
Files
Jump to
Current section
Files
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