Packages

Elixir-native feature management for safe rollout, multivariate config, and explainable runtime decisions.

Current section

Files

Jump to
rulestead lib rulestead admin dependency_visibility.ex
Raw

lib/rulestead/admin/dependency_visibility.ex

defmodule Rulestead.Admin.DependencyVisibility do
@moduledoc false
alias Rulestead.Admin.Authorizer
@spec visibility_resolver(term()) :: (map() -> boolean())
def visibility_resolver(actor) do
fn entry -> visible_entry?(actor, entry) end
end
defp visible_entry?(actor, entry) do
flag_key = Map.get(entry, :flag_key) || Map.get(entry, "flag_key")
environment_key = Map.get(entry, :environment_key) || Map.get(entry, "environment_key")
case flag_key do
key when is_binary(key) and key != "" ->
resource = %{resource_type: :flag, resource_key: key}
case Authorizer.authorize(actor, :read_flags, resource, environment_key) do
:ok -> true
{:error, _, _} -> false
end
_ ->
true
end
end
end