diff --git a/lib/acx/enforcer.ex b/lib/acx/enforcer.ex index dc836d4..9385d69 100644 --- a/lib/acx/enforcer.ex +++ b/lib/acx/enforcer.ex @@ -475,7 +475,7 @@ defmodule Acx.Enforcer do when is_atom(mapping_name) and is_binary(role1) and is_binary(role2) and is_binary(dom) do with group when not is_nil(group) <- Map.get(groups, mapping_name), false <- Enum.member?(mappings, mapping), - group <- RoleGroup.add_inheritance(group, {role1, role2 <> dom}) do + group <- RoleGroup.add_inheritance(group, {{role1, dom}, {role2, dom}}) do new_enforcer = %{ enforcer | role_groups: %{groups | mapping_name => group}, @@ -720,7 +720,7 @@ defmodule Acx.Enforcer do ) when is_atom(mapping_name) and is_binary(role1) and is_binary(role2) and is_binary(dom) do with group when not is_nil(group) <- Map.get(groups, mapping_name), - group <- RoleGroup.remove_inheritance(group, {role1, role2 <> dom}), + group <- RoleGroup.remove_inheritance(group, {{role1, dom}, {role2, dom}}), mappings <- Enum.reject(mappings, fn m -> m == mapping end), {:ok, _adpater} <- PersistAdapter.remove_policy(adapter, {mapping_name, [role1, role2, dom]}) do diff --git a/lib/acx/internal/role_group.ex b/lib/acx/internal/role_group.ex index e7cc63c..02841e4 100644 --- a/lib/acx/internal/role_group.ex +++ b/lib/acx/internal/role_group.ex @@ -145,9 +145,9 @@ defmodule Acx.Internal.RoleGroup do ...> false = f.(1, 2) ...> f.("admin", "member") true - ...> g = g |> RoleGroup.add_inheritance({"admin", "memberdomain"}) + ...> g = g |> RoleGroup.add_inheritance({{"admin", "domain"}, {"member", "domain"}}) ...> f = g |> RoleGroup.stub_3 - ...> false = f.("member", "admin", "dom") + ...> false = f.("member", "admin", "domain") ...> f.("admin", "member", "domain") true """ @@ -161,7 +161,7 @@ defmodule Acx.Internal.RoleGroup do def stub_3(%__MODULE__{} = group) do fn arg1, arg2, arg3 -> - group |> inherit_from?(arg1, arg2 <> arg3) + group |> inherit_from?({arg1, arg3}, {arg2, arg3}) end end end