# `MishkaCmsCore.Runtime.PageBuilder.BuilderAccess`
[🔗](https://github.com/mishka-group/mishka_cms_core/blob/v0.0.1/lib/mishka_cms_core/runtime/page_builder/builder_access.ex#L5)

A policy check: the actor may open the builder the row's own section names — its runtime area or
`admin:dashboard:code` (`MishkaCmsCore.Runtime.PageBuilder.Section.permissions/1`).

Snippets, review notes and builder history each carry the section they were written in, so the
names they need are read off the row:

    policies do
      policy action_type([:create, :read, :update, :destroy]) do
        authorize_if {MishkaCmsCore.Runtime.PageBuilder.BuilderAccess, field: :section}
      end
    end

A create is decided by the section it writes; a read, update or destroy reaches the rows whose
section the actor holds. The site scope of `MishkaCmsCore.Accounts.Checks.AccessPermissions`
applies: a site user holds nothing under another site's tenant.

## Options

  * `:field` — the attribute holding the section (`:page`, `:layout`, `:component`,
    `:error_page`). Required.

# `auto_filter`

# `auto_filter_not`

# `check`

# `eager_evaluate?`

# `expand_description`

# `init`

# `prefer_expanded_description?`

# `reject`

# `requires_original_data?`

# `sections`

```elixir
@spec sections(map() | nil, map()) :: [atom()]
```

The sections whose builder `actor` may open, as the atoms the builder's rows store.

# `strict_check`

# `strict_check_context`

# `type`

---

*Consult [api-reference.md](api-reference.md) for complete listing*
