Current section

Files

Jump to
rbac lib rbac.ex
Raw

lib/rbac.ex

defmodule RBAC do
@moduledoc """
Documentation for `Rbac`.
"""
@doc """
Transform a list of maps (roles) to comma-separated string of ids.
## Examples
iex> RBAC.transform_role_list_to_string([%{id: 1}, %{id: 2}, %{id: 3}])
"1,2,3"
iex> RBAC.transform_role_list_to_string("1,2,3")
"1,2,3"
iex> RBAC.transform_role_list_to_string(%{name: "subscriber", id: 1})
"1"
"""
def transform_role_list_to_string(roles) when is_list(roles) do
Enum.map_join(roles, ",", &(&1.id))
end
# this guard is meant to return the string form if it's already defined:
def transform_role_list_to_string(roles) when is_binary(roles) do
roles
end
# if roles is a struct/map then attempt to parse it:
def transform_role_list_to_string(roles) do
[ Map.delete(roles, :__meta__) ] |> transform_role_list_to_string()
end
end