Permissions
Access
What a role may do with the data. Everyone holding the role gets exactly this.
Access updated. It applies to the next request every holder of the role makes.
{% endif %} {% if page.roles.is_empty() %}No role to edit
There is no role here you outrank. Create one first.
Role
{% if !page.selected_parent.is_empty() %} {{ page.selected_role }} inherits everything {{ page.selected_parent }} has. Inherited access shows below but is changed on the parent. {% else %} {{ page.selected_role }} inherits from nothing, so what you see below is all it has. {% endif %} {% if page.selected_is_structural %} This role designs the system and may never write row data, so only the read column is open. {% endif %}
Shortcuts
These grant the wildcard objects, so they keep covering profiles and tables created later.
{% if group.global %}Everything, everywhere{% else %}Profile: {{ group.title }}{% endif %}{{ group.rows.len() }}
| Object | {% for action in page.actions() %}{{ action }} | {% endfor %}Row |
|---|---|---|
{{ row.label }}
{% if !row.note.is_empty() %}{{ row.note }}{% endif %}
{{ row.object }}
|
{% for cell in row.cells %}
{% if !cell.allowed %} · {% else if cell.direct %} {% call apply(page.selected_role, "revoke", row.one_pair(cell.action.as_str()), "✓", "cell-on", "Held directly — click to revoke") %}{% endcall %} {% else if cell.inherited %} ↑ {% else %} {% call apply(page.selected_role, "grant", row.one_pair(cell.action.as_str()), "+", "cell-off", "Click to grant") %}{% endcall %} {% endif %} | {% endfor %}
{% call apply(page.selected_role, "grant", row.all_pairs(), "All", "secondary", "Grant every action available on this object") %}{% endcall %}
{% if row.has_direct() %}
{% call apply(page.selected_role, "revoke", row.direct_pairs(), "None", "danger", "Revoke this object's direct grants") %}{% endcall %}
{% endif %}
|