Bonfire.UI.Boundaries.VerbPermissionsHelper (Bonfire v1.0.0-social-rc.3.22)

View Source

Helper functions for managing verb-level permissions in boundary UI components.

Summary

Functions

Reconstructs verb_permissions map from to_circles and exclude_circles lists.

Transforms ACL subject verb grants to verb permissions format for display.

Transforms the internal verb permissions format to direct verb grants, bypassing the role system.

Updates a single verb permission for a specific circle.

Functions

reconstruct_verb_permissions(to_circles, exclude_circles)

Reconstructs verb_permissions map from to_circles and exclude_circles lists.

This is the reverse of transform_to_circles_format/1, used to restore state when components are recreated (e.g., modal reopening).

transform_acl_to_verb_format(acl_subject_verb_grants)

Transforms ACL subject verb grants to verb permissions format for display.

Takes ACL grants structure: %{subject_id => %{subject: subject, grants: %{verb_id => grant}}}

Returns: {verb_permissions, to_circles}

transform_to_verb_grants_format(verb_permissions)

Transforms the internal verb permissions format to direct verb grants, bypassing the role system.

Takes a map like: %{"like" => %{"circle_id_1" => :can, "circle_id_2" => :cannot}, "boost" => %{"circle_id_1" => :can}}

Returns: {to_circles, verb_grants}

to_circles contains just the circles without roles: [{circle, nil}] verb_grants contains direct verb permissions: [{circle_id, verb, value}]

Example output: {[{%{id: "circle_1"}, nil}, {%{id: "circle_2"}, nil}], [{"circle_1", :like, true}, {"circle_1", :boost, true}, {"circle_2", :like, false}, {"circle_2", :boost, false}]}

update_verb_permission(current_permissions, circle_id, verb, verb_value)

Updates a single verb permission for a specific circle.